PDA

View Full Version : سوال: کپی گروهی فایلها در مسیر ذکر شده



R2du-soft
سه شنبه 20 تیر 1391, 01:57 صبح
سلام
راستش هرچی توی سایت گشتم جواب سوالمو پیدا نکردم گفتم 1 تاپیک بزنم :ناراحت:

من از کد زیر برای کپی گروهی فایل استفاده کردم



Private Sub Command1_Click()
FileCopy "D:\Windows\*.dll", "D:\1\"
End Sub



ولی متاسفانه جواب نمیده!!! و ارور run time 52 میده
همه جوره با کد ور رفتم ولی نشد!!!!

کوچکترین کد برای انجام این کار چیه؟ (منظورم اینه که زیاد کد پیچیده و طولانی نشه و تو 2 خط خلاصه باشه)

مرسی

the king
سه شنبه 20 تیر 1391, 03:06 صبح
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Sub Command1_Click()
ShellExecute hWnd, "open", "xcopy", """D:\Windows\*.dll"" ""D:\1"" /I", vbNullString, 0
End Sub

اون سوئیچ I/ برای اینه که xcopy بدونه D:\1 یک پوشه است نه فایل، حتی اگه الان وجود نداشته باشه.
اگر بخواهید زیر پوشه ها رو هم پیمایش کنه یک سوئیچ S/ هم اضافه کنید، یعنی بجای I/ از I /S/ استفاده کنید.

R2du-soft
سه شنبه 20 تیر 1391, 06:35 صبح
مرسی دوست عزیز
فقط یه چیزی
اگه توی کد بالا به جای دو مسیر محل اصلی و محل کپی شدن فایل متغیر بخوایم قرار بدیم کدمون ارور میده!!!!

متغیر مسیر اصلی فایلمون در متغیر Text1.Text هست
مسیر مکان کپی شدن فایلمون در متغیر sDir$ هست


من کد رو به صورت زیر تغییر دادم ولی نتیجه ای نگرفتم!!!


Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Sub Command1_Click()

ShellExecute hWnd, "open", "xcopy", """Text1.Text & \*.dll"" ""sDir$"" /i", vbNullString, 0

end sub


راستی این دستور اگه فایل در مسیر وجود داشته باشه فایل رو جایگزین فایل قبلی نمیکنه!! میشه این کارم کرد؟!
مرسی

محسن واژدی
سه شنبه 20 تیر 1391, 09:39 صبح
اگه توی کد بالا به جای دو مسیر محل اصلی و محل کپی شدن فایل متغیر بخوایم قرار بدیم کدمون ارور میده!!!!



این دستور اگه فایل در مسیر وجود داشته باشه فایل رو جایگزین فایل قبلی نمیکنه!! میشه این کارم کرد؟!

سلام علیکم
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Sub Command1_Click()
ShellExecute hWnd, "open", "xcopy", """" & Text1.Text & "\*.dll"" """ & sDir$ & """ /i /r /y", vbNullString, 0
End Sub

و اگر بخواهیم از Shell بجای apiی ShellExecuteاستفاده کنیم:
Private Sub Command21_Click()
Shell "xcopy """ & Text1.Text & "\*.dll"" """ & sDir$ & """ /i /r /y"
End Sub

البته متد CopyFolder از کامپوننت "Windows Script Host Object Model" هم برای کپی فولدر وجود دارد منتها در صورتیکه بخواهیم تمام محتوی فولدر را کپی کنیم و نه بخش های فیلتر شده

موفق باشید