PDA

View Full Version : سوال: تغییرنام فایل ها با استفاده از کتابخانه ی shell32



f_talebi
شنبه 24 فروردین 1392, 21:36 عصر
سلام
بنده باید با استفاده از کتابخانه ی shell32 فایلهای مورد نظرم رو تغییرنام بدم.
تو سرچی که انجام دادم این رو پیدا کردم :

http://msdn.microsoft.com/en-us/library/windows/desktop/bb762164(v=vs.85).aspx

کد حذف کردن با استفاده از این رو دارم، اما نمیدونم چطوری باید از این برای تغییر نام و کپی فایل ها استفاده کنم؟
ممنون میشم راهنمایی کنین.

nokhodsiah2001
یک شنبه 25 فروردین 1392, 00:10 صبح
درود بر شما
از این کد ایده بگیر و استفاده کنید



Dim files As String()
files = IO.Directory.GetFiles(TextBox1.Text, "*.txt")
Dim filepath_new As String

For Each filepath As String In files
filepath_new = filepath.Replace(".txt", ".tx1")
System.IO.File.Move(filepath, filepath_new)
Next

f_talebi
یک شنبه 25 فروردین 1392, 19:31 عصر
از شل32 استفاده شده؟ باید حتما با کتابخانه شل32 و توابعش انجام بدم این کار رو.

Mani_rf
دوشنبه 26 فروردین 1392, 01:34 صبح
به این کار (استفاده مستقیم از DLL های ویندوز) میگن استفاده از API های ویندوز. البته Shell32 برای اینکار نیست؛ Kernel32 برای این کاره.
برای استفاده از این روش از کد زیر استفاده کن :
حذف :
<DllImport("kernel32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _
Public Shared Function DeleteFile(ByVal path As String) As Boolean
End Function

جابجا و تغییر نام :
<DllImport("kernel32", CharSet:=CharSet.Auto, SetLastError:=True)> _
Public Shared Function MoveFile(<[In], MarshalAs(UnmanagedType.LPTStr)> ByVal lpExistingFileName As String, <[In], MarshalAs(UnmanagedType.LPTStr)> ByVal lpNewFileName As String) As Integer
End Function
برای اینکه یک فایل رو تغییر نام بدی کافیه تا آدرس مبدا و مقصد یکی باشه فقط نام فایل عوض بشه

مهرداد صفا
سه شنبه 27 فروردین 1392, 12:25 عصر
سلام
بنده باید با استفاده از کتابخانه ی shell32 فایلهای مورد نظرم رو تغییرنام بدم.
تو سرچی که انجام دادم این رو پیدا کردم :

http://msdn.microsoft.com/en-us/library/windows/desktop/bb762164(v=vs.85).aspx

کد حذف کردن با استفاده از این رو دارم، اما نمیدونم چطوری باید از این برای تغییر نام و کپی فایل ها استفاده کنم؟
ممنون میشم راهنمایی کنین.


با سلام.
با استفاده از متود Shell32.Shell.Namespace پوشه مورد نظر را گرفته و Name آیتم مورد نظر آن را تغییر میدهید به همین سادگی!
مثلا برای تغییر E:\temp\xxx به E:\temp\yyy به این صورت عمل کنید:

Dim shell As New Shell32.Shell
Dim folder As Shell32.Folder = shell.NameSpace("e:\temp")
Dim file As Shell32.FolderItem = (From item In folder.Items Where item.name = "xxx").First
file.Name = "yyy"


فراموش نکنید Shell32.dll را Reference کنید.