View Full Version : cmd در vbs
arash.arya43
سه شنبه 17 شهریور 1394, 20:15 عصر
دوستان این کد cmd رو میتونیم تو vbs استفاده کنیم بدون باز شدن پنجره cmd? یا کدی برای vbs که با سوییچی برای کپی عکسها از زیر پوشه ها
@echo off
for /r G:\ %%f in (*.jpg /b /s /a:d) do @copy "%%f" E:\1
pause
pbm_soy
چهارشنبه 18 شهریور 1394, 03:26 صبح
این دستور یا برنامه Batch است که در داس کاربرد زیادی داشتند و الان هم کار میکنند
این دستورات یا همان دستور for تعدای فایل خاص را بجای خاصی کپی میکند در هرصورت میخواستم این را بگم که درسته که میتوانید دستورات داس و یا دستورات سیستم عامل و همینطور برنامه های اجرائی را توسط shell و یا با توابع API ویندوز مانند shellEx اجرا کنید و فکر میکنم پارامتری هم داشته باشد که پنجره را مخفی کند
ولی بجای استفاده از این دستورات شما برای کپی کردن فایل و یا درکل برای کار کردن با فایل سیستم میتوانید از کلاس FSO یا همان File System Object در VBS استفاده کنید که در آن گرفتن لیست فایلها و فولدرها و یا حذف و کپی و تغییر نام و انتقال ..... فایلها را انجام میدهد
arash.arya43
چهارشنبه 18 شهریور 1394, 13:58 عصر
خیلی ممنون .دقیقا با اونها به مشکل بر خوردم که خواستم این طوری عمل کنم .اگه اجازه بدین سورسام روبزارم مشکل رو مطرح کنم؟
arash.arya43
چهارشنبه 18 شهریور 1394, 14:24 عصر
من دوتا مشکل دارم :
1.یک کد نوشتم که یک فایل روتو تمام زیر وشه های درایو میگرده وهر جا پیدا کرد مسیج باکس میکنه.البته دوباره تاکید میکنم (هرجا) چون ممکنه از این فایل تو سه پوشه باشه.الان می خوام کد رو تغییر بدم که هر جا فایل موردنظرم رو پیدا کرد که همون a.jpg هست فایلی به اسم b.jpg رو هم کنارفایل a.jpg کپی کنه.که متاسفانه هر چی سورس رو تغییر میدم نمیشه
Sub SearchFile(path, name)
on error resume next
Set fso = CreateObject("scripting.filesystemobject")
Set folder = fso.getfolder(path)
Set Files = folder.Files
For Each file In Files
If file.name = name Then
MsgBox file.path
End If
Next
Set subfolders = folder.subfolders
For Each subfolder In subfolders
SearchFile subfolder.path, name
Next
End Sub
Call SearchFile("D:\", "a.jpg")
2.با همین متد می خوام تمام فایلها با فرمت pdf از درایو k:\ و زیر پوشه ها به درایو d:\pdf پوشه pdf کپی کنم و اگه فایل تکراری بود یا تو پوشه بود دوباره کپی نشه.متاسفانه تو کپی از زیر پوشه ها مورد دارم یعنی اگه فایل با فرمت pdfتو زیر پوشه ها باشه کار نمیکنه.لطف کنین ببینین شما میتونین درست کنین دو سه جا پرسیدم دوستان کمک کردن ولی سورسا درست کار نکردن
pbm_soy
چهارشنبه 18 شهریور 1394, 21:43 عصر
برای سوال اول میتوانید داخل if از دستور زیر برای کپی استفاده کنید
fso.CopyFile "c:\mySourceFolder\b.jpg", "d:\myDestFolder\"
فقط توجه کنید برای اینکه میخواهید کنار فایل a.jpg پیدا شده کپی شوند میتوانید مسیر مقصد را برابر file.path قرار دهید
البته برای متد copyFile یادم نمیاد در مسیر مقصد باید نام فایل را هم قید میکردیم یا نه؟! در هر صورت این دستور را به دو حالت هم در پایین مینویسم امتحان کنید
fso.CopyFile "c:\mySourceFolder\b.jpg", file.path + "\b.jpg"
ویا بصورت زیر بدون مشخص کردن نام فایل مقصد
fso.CopyFile "c:\mySourceFolder\b.jpg", file.path
arash.arya43
پنج شنبه 19 شهریور 1394, 00:00 صبح
خیلی ممنون در هر دوحالت هم جواب نداد
Sub SearchFile(path, name)
on error resume next
Set fso = CreateObject("scripting.filesystemobject")
Set folder = fso.getfolder(path)
Set Files = folder.Files
For Each file In Files
If file.name = name Then
fso.CopyFile "d:\b\b.jpg", file.path + "\b.jpg"
End If
Next
Set subfolders = folder.subfolders
For Each subfolder In subfolders
SearchFile subfolder.path, name
Next
End Sub
Call SearchFile("D:\", "a.jpg")
و
Sub SearchFile(path, name)
on error resume next
Set fso = CreateObject("scripting.filesystemobject")
Set folder = fso.getfolder(path)
Set Files = folder.Files
For Each file In Files
If file.name = name Then
fso.CopyFile "d:\b\b.jpg", file.path
End If
Next
Set subfolders = folder.subfolders
For Each subfolder In subfolders
SearchFile subfolder.path, name
Next
End Sub
Call SearchFile("D:\", "a.jpg")
البته هیچ اروری هم نمیده.واقعا من موندم یککد که اولش ساده به نظر میاد این همه بره رواعصاب
arash.arya43
پنج شنبه 19 شهریور 1394, 00:45 صبح
البته کد on error resume next رواگه برداریم با اروری که عکسش روپیوست کردم می خوریم .انتی ویروس وادمینی استراتور رودیز کردم ولی باز نشد
135139
arash.arya43
پنج شنبه 19 شهریور 1394, 22:36 عصر
uppppppppppppppp
pbm_soy
جمعه 20 شهریور 1394, 01:28 صبح
برای سوال دوم هم مفصب مظلب نوشته بودم که ارتباط اینترنتم قطع شد!
ولی درمورد خطایی که پیش آمده باید بگم که متد copyFile فقط فایل را کپی میکند و اگر درست نوشته باشید و درست اسم وفایل ومسیرها را قید کرده باشید نباید مشکلی داشته باشید
این دستور صرفا کار کپی را انجام میدهد و برای اینکه از صحت کار مطمئن شوید میتوانید یک برنامه جدا بنویسید و در آن فقط یک خط برای کپی کردن یک فایل از جایی به جای دیگر را بنویسید
در ضمن احتمال نداشتن دسترسی و خطای permission هم میتواند پیش بیاید و بعضی مواقع این خطا شاید با administraot رفع نشود باید دقیقتر بررسی کنید و یک راه ساده اینکار این است که برنامه را در یک ویندوز دیگر اجرا کنید و نتیجه را بررسی کنید
مورد دیگر اینکه خطا در خط 6 گفته شده و مربوط به دستور copyFile نمیباشد از خط for است گویا!
اگر خطا از دستور copy file باشد احتمالا بخاطر دسترسی به فایل یا فولدری که نباید دسترسی داشته باشید، است!
arash.arya43
جمعه 20 شهریور 1394, 11:10 صبح
دقیقا به نکته خوبی رسیدیم.خط6 .ما اصلا این خط رو دستکاری نکردیم و برای کد سرچ درست کار میکنه ولی برای کپی کردن نه .برای مساله امنیتی و اجازه هم انتی و ادمینی رو غیر فعال کردم ولی بازم خطای پرمیژن میده واقعا عقلم به جایی قد نمیده.اخه کجاش ایراد داره .منطق کد که درسته. و ایرادی نداره به نظر.ما فقط یک خط کد به کدی که درست کار میکنه اضافه کردیم اونم کپی هست
pbm_soy
سه شنبه 24 شهریور 1394, 02:49 صبح
الان فقط تو یک فایل اسکریپت فقط یک فایل را از جایی به جای دیگه با دستور copyfile کپی کنید هیچ دستور دیگری ننویسید بجز دستورات موردنیاز copyfile چیز دیگری ننویسید وبهش اسم و مسیر فایل را بصورت ثابت بدید
ببینید میتوانید اینکار را انجام دهید ؟!
arash.arya43
چهارشنبه 25 شهریور 1394, 23:10 عصر
خوب این رو میدونم وکد روهم قبلا وهم الان به تنهایی تست زدم و درست کار میکنه اما درون این کد درست کار نمیکنه همون خطای پرمیژن رو میده.که نه به انتی ربط داره نه به ادمین.والا موندم چه کار کنم.اخه کد که درسته:ناراحت:
pbm_soy
جمعه 27 شهریور 1394, 23:08 عصر
اینکار را بروی درایوی انجام بدهید که ntfs نباشد ببینید نتیجه چی میشه؟!
مثلا روی یک فلش فایل را از فولدری به فولدر دیگه کپی کنید و مطمین شوید که فلش fat ویا fat32 باشد منظورم file system فلش است
arash.arya43
شنبه 28 شهریور 1394, 12:46 عصر
اینم fat32
http://s3.picofile.com/file/8212854934/2015_09_19_13_29_57.mp4.html
یکی از اساتید که کم وبیش نام اشنا هستن هم تست کردن و تعجب که چرا عملکرد درستی نداره
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.