PDA

View Full Version : سوال: حذف فایل هایی با پسوند خاص



vb8334
سه شنبه 19 بهمن 1389, 16:26 عصر
با سلام به دوستان

من می خواستم مثلآ فایل هایی با پسوند mp3 رو حذف کنم

این کد رو نوشتم ولی ایراد داره؟

اینم کد :


For Each filepath As String In IO.Directory.GetFiles("e:\", "*.mp3", IO.SearchOption.AllDirectories)
Try
IO.File.Delete(filepath)
ListBox1.Items.Add(filepath & " deleted")
Catch ex As Exception
ListBox1.Items.Add(filepath & " not deleted, " & ex.Message)
End Try
Next


ممنون

Saman_12
سه شنبه 19 بهمن 1389, 18:00 عصر
میتونی از این استفاده کنی :

Shell("Del C:\*.txt")

vb8334
سه شنبه 19 بهمن 1389, 18:23 عصر
نه این کد فایده نداره دوست عزیز من میخوام سرچ کنه برنامه و مثلآ هر چی فایل با پسوند mp3 رو پاک کنه

ممنون

hero4000
چهارشنبه 20 بهمن 1389, 10:21 صبح
دوست عزيز کدت که فکر کنم درست باشه خوب حداقل بگو چه ايرادي ميگره تا راهنمائي کنيم

vb8334
چهارشنبه 20 بهمن 1389, 10:58 صبح
اینم ارور برنامه که به صورت عکس گذاشتم

Saman_12
چهارشنبه 20 بهمن 1389, 17:45 عصر
نه این کد فایده نداره دوست عزیز من میخوام سرچ کنه برنامه و مثلآ هر چی فایل با پسوند mp3 رو پاک کنه

ممنون

فایده که داره من فقط پارامتر هاش رو یادم رفت بنویسم :

Shell("Del /s /q C:\*.txt")

اگه اون کار نکرد (فکر کنم توی Xp جواب بده آخه توی Se7en من نداد!) میتونی از این Sub استفاده کنی :

Private Sub FileDel(ByVal Path As String, ByVal ParamArray Ex() As String)

For Each nEx As String In Ex

FileIO.FileSystem.WriteAllText("del.bat", vbCrLf & "del /s /q " & Path & nEx & vbCrLf, True)
Next

Dim id As Integer = Shell("del.bat", AppWinStyle.Hide)

Re:
Try

Process.GetProcessById(id)
GoTo Re
Catch exc As Exception

Kill("del.bat")
End Try
End Sub

طریقه استفاده اش هم که با نگاه به کد معلومه :

FileDel("C:\", "*.txt")

vb8334
چهارشنبه 20 بهمن 1389, 18:52 عصر
دمت گرم از این که جواب میدی

ولی ارور FileNotFoundException رو میده؟

ممنون

Saman_12
چهارشنبه 20 بهمن 1389, 21:34 عصر
کدوم کد این خطا رو میده؟
اگر اولی هست که گفم روی سیستم من هم جواب نداد فکر کنم چون دستور Del داس یک آرگامنت برای خود داس هست نه یک فایل!

خوب میتونی از Sub ی که گذاشتم استفاده کنی :


Private Sub FileDel(ByVal Path As String, ByVal ParamArray Ex() As String)

For Each nEx As String In Ex

FileIO.FileSystem.WriteAllText("del.bat", vbCrLf & "del /s /q " & Path & nEx & vbCrLf, True)
Next

Dim id As Integer = Shell("del.bat", AppWinStyle.Hide)

Re:
Try

Process.GetProcessById(id)
GoTo Re
Catch exc As Exception

Kill("del.bat")
End Try
End Sub

vb8334
چهارشنبه 20 بهمن 1389, 23:44 عصر
از این خط ایراد میگیره :


Dim id As Integer = Shell("del.bat", AppWinStyle.Hide)

این ارور ارور FileNotFoundException میده

ممنون

hero4000
پنج شنبه 21 بهمن 1389, 08:38 صبح
دوست عزيز اين کد رو بزن اميدوارم که ديگه حل بشه



Shell("Cmd /c "" Del /s /q C:\*.Mp3""")


در ضمن ايراد کد دوستمون سامان هم اينه که يادشون رفته فايل Del.bat رو بهتون بدن

vb8334
پنج شنبه 21 بهمن 1389, 10:18 صبح
ممنون دوست عزیز اجرا شد موفقیت امیز بود.

یه سوال دیگه چجوری می تونم سرچ کنم تو یه درایو بینم فایلی با چنین پسوندی (مثلآ mp3.) وجود داره یا نه؟


ممنون

hadi2345
پنج شنبه 21 بهمن 1389, 12:15 عصر
با سلام ،



Dim di as New DirectoryInfo("C:\MyDirectory")

Dim fi as New FileInfo

for each fi in di.GetFiles
If Path.GetExtension(fi.FullName).ToUpper = ".MP3" Then
combobox.Items.Add(fi.Fullname)'Or whatever
End If
next

vb8334
پنج شنبه 21 بهمن 1389, 12:34 عصر
ممنون از این که پاسخ دادید

ولی این کد یکم ایراد داره اونم اینه که ما باید مسیر فایل mp3 رو بدیم که این مطلوب نیست

فرض کن من 4 تا درایو دارم می خوام برنامه بیاد این درایوها رو سرچ کنه و اگه فایلی با پسوند mp3 بود رو پیدا کنه و با این دستور حذف کنه


Shell("Cmd /c "" Del /s /q C:\*.Mp3""")

البته شک دارم بشه با این دستور Dos این کار رو کرد یعنی من مسیر فایلهای با پسوند mp3 رو بهش بدم اون حذف کنه یعنی بجای \:c من متغیری با نام masir رو بهش بدم نظر شما چیه؟

ممنون

vb8334
پنج شنبه 21 بهمن 1389, 12:47 عصر
دوستان من دنبال یه همچین چیزی هستم


Imports System.IO
Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Call DeleteDirectory(dir_name:="e:\")
End Sub
' Delete this directory and all the files it contains.
Private Sub DeleteDirectory(ByVal dir_name As String)
Dim file_name As String
Dim files As Collection
Dim i As Integer

' Get a list of files it contains.
files = New Collection
file_name = Dir$(dir_name & "\*.*", vbReadOnly + _
vbHidden + vbSystem + vbDirectory)

Do While Len(file_name) > 0
If (file_name <> "..") And (file_name <> ".") Then
files.Add(dir_name & "\" & file_name)
End If
file_name = Dir$()
Loop

' Delete the files.
For i = 1 To files.Count
file_name = files(i)
' See if it is a directory.
If GetAttr(file_name) And vbDirectory Then
' It is a directory. Delete it.
DeleteDirectory(file_name)
Else
' It's a file. Delete it.
lblstatus.Text = file_name
lblstatus.Refresh()
End If
Next i

' The directory is now empty. Delete it.
lblstatus.Text = dir_name
lblstatus.Refresh()

End Sub

End Class


این کد جستجو میکنه ولی حذف نمیکنه می خوا بهش بگم اگه فایلی با پسوند مثلآ mp3 گیرت اومد کلکشو بکن:کف:

ممنون

Slytherin
پنج شنبه 21 بهمن 1389, 13:40 عصر
به غیر از لیست کردن درایو ها توسط برنامه، آیا راهی هست که با همین دستورات CMD بشه کل فایل های مثلا mp3 رو در کل هارد (همه درایو ها) پاک کرد؟

vb8334
پنج شنبه 21 بهمن 1389, 14:07 عصر
میشه این کار رو کرد به این صورت :


Shell("Cmd /c "" Del /s /q C:\*.doc""")
Shell("Cmd /c "" Del /s /q e:\*.doc""")
Shell("Cmd /c "" Del /s /q f:\*.doc""")
Shell("Cmd /c "" Del /s /q g:\*.doc""")
ولی اگه میشد درایوها رو با برنامه بهش بفهمونیم خیلی خوب میشد نه به صورت دستی


ممنون

Slytherin
پنج شنبه 21 بهمن 1389, 15:01 عصر
منظور منم به صورت اتوماتیک بود نه دستی.

Saman_12
پنج شنبه 21 بهمن 1389, 19:39 عصر
وقتی با یه حلقه For ساده میشه این کار رو کرد چرا؟ :


For i As Integer = 66 To 90

Shell("Cmd /c "" Del /s /q " & Chr(i) & ":\*.txt""")
Next


یا :


For Each DirName As String In Environment.GetLogicalDrives()

Shell("Cmd /c "" Del /s /q " & DirName & ":\*.txt""")
Next


در ضمن هیچ وقت داس رو دست کم نگیرید!(داس هم If , For ,Reg Command و ... داره وکسی که به اون ها وارد باشه خیلی کار ها میتونه بکنه).

Slytherin
جمعه 22 بهمن 1389, 10:27 صبح
ممنون، عالی بود.
من یک سوال متفرقه دارم، اگر فکر می کنید اینجا اسپم می شود به لطفا صورت خصوصی جواب بدید.
آیا منبعی به غیر از خود Help داس وجود دارد که بشه این دستورات رو یاد گرفت؟
راتش رو بخواهید سن من به داس قد نمی دهد و فرصت نشد که درست و حسابی باهاش سر و کله بزنم:D

Reza,M
جمعه 22 بهمن 1389, 10:54 صبح
با سلام ،



Dim di as New DirectoryInfo("C:\MyDirectory")

Dim fi as New FileInfo

for each fi in di.GetFiles
If Path.GetExtension(fi.FullName).ToUpper = ".MP3" Then
combobox.Items.Add(fi.Fullname)'Or whatever
End If
next


چرا به متغيير fi خطا ميگيره براي FileInfo رفرنسي ميخواد ؟

hero4000
شنبه 23 بهمن 1389, 10:19 صبح
دوست عزيز بازهم ميتوني از دستورات داس استفاده کني



Shell("Cmd /c "" Dir /s C:\*.Mp3 >Temp.txt""")


با اين دستور کليه فايلهاي پيداشده رو توي فايل Temp.txt ميريزه و شما ميتوني ليست فالهاي پيداشده رو از توي اون بخوني