Board logo

標題: 刪除資料夾內的檔案 [打印本頁]

作者: man65boy    時間: 2012-6-13 23:16     標題: 刪除資料夾內的檔案

請教各位老師們,如何以vbs檔,製作出刪除d:\內 (特定的資料夾裡頭所有的檔案),請老師們指教,謝謝!
作者: oobird    時間: 2012-6-13 23:54

Dim fso
Set fso = CreateObject("scripting.filesystemobject")
fso.DeleteFile "D:\aa\*"
作者: oobird    時間: 2012-6-13 23:56

放在vba中一樣通用
作者: GBKEE    時間: 2012-6-14 06:23

回復 1# man65boy
Kill "d:\*.xls"
Ps : Kill 來刪除一個已開啟的檔案,則會產生錯誤
作者: man65boy    時間: 2012-6-14 06:49

回復 2# oobird


    感謝oobird大大的解題,成功了!
也謝謝GBKEE大大的建言,小弟會注意,感謝。
作者: oobird    時間: 2012-6-14 10:00

回復  man65boy
Kill "d:\*.xls"
Ps : Kill 來刪除一個已開啟的檔案,則會產生錯誤
GBKEE 發表於 2012-6-14 06:23



    印象中vbs好像不支持kill~還是我記錯了?
作者: GBKEE    時間: 2012-6-14 10:15

回復 6# oobird
2003版是可以的,其他版我不知道 .
作者: linsurvey2005    時間: 2012-10-25 09:13

回復 4# GBKEE

大大好:
要刪除D:磁槽裡面的"練習-1"、"練習-2"、"練習-3".....
或者是C:磁槽裡面的"練習-1"、"練習-2"、"練習-3".....   

條件是知道檔案的前面名稱,後面序號卻很多個,而且也忘記存放在哪個資料夾
只想把電腦裡面所有檔名為"練習" or "練習-1"等序號全部刪除
檔案類型都是Excel、Word可以分別進行刪除嗎?
作者: GBKEE    時間: 2012-10-25 14:22

回復 8# linsurvey2005
小心使用, 可刪除一般資料夾中所指定的檔名.
  1. Option Explicit
  2. Dim xlDelName As String
  3. Dim xF As Object
  4. Sub Ex()
  5.     Dim FS As Object, d As Object, e As Object
  6.     xlDelName = "\*練習*"
  7.     On Error GoTo rr   '2003 繁體中:如目錄有簡體字會有錯誤
  8.     For Each d In CreateObject("Scripting.FileSystemObject").Drives  '磁碟機
  9.         If d.IsReady Then  '磁碟機已準備好
  10.             Set FS = CreateObject("Scripting.FileSystemObject").GetFolder(d.Path) '主目錄
  11.             If Dir(FS.Path & xlDelName) <> "" Then Kill FS.Path & xlDelName
  12.             For Each e In FS.SubFolders
  13.                 If e.Attributes = 16 Then 子目錄 e.Path
  14.                 'e.Attributes = 16 => 一般資料夾
  15.             Next
  16.         End If
  17.     Next
  18.     MsgBox "刪除完畢"
  19.     Exit Sub
  20. rr:
  21. MsgBox xF.Path, , "資料夾為簡體字"
  22. End Sub
  23. Sub 子目錄(xlfolder As String)  '子目錄
  24.     Dim e
  25.     Set xF = CreateObject("Scripting.FileSystemObject").GetFolder(xlfolder)
  26.     If Dir(xF.Path & xlDelName) <> "" Then Kill xF.Path & xlDelName
  27.     For Each e In xF.SubFolders
  28.         If e.Attributes = 16 Then 子目錄 e.Path
  29.     Next
  30. End Sub
複製代碼

作者: mark15jill    時間: 2012-10-25 16:14

回復  linsurvey2005
小心使用, 可刪除一般資料夾中所指定的檔名.
GBKEE 發表於 2012-10-25 14:22



   
請問 這個有辦法先備份後 在動作嗎??
如 d 槽內執行此指令 但先將資料copy 到c槽..
作者: PJChen    時間: 2012-10-25 16:19

回復 2# oobird

請教大大,

這個程式可以刪除所有的檔案,但非檔案(如:資料夾)就刪不掉,可以怎麼修改程式,讓它全都刪除?
作者: GBKEE    時間: 2012-10-25 18:32

本帖最後由 GBKEE 於 2012-10-26 07:24 編輯

回復 10# mark15jill

回復 11# PJChen
  1. Option Explicit
  2. Dim xlDelName As String
  3. Dim xF As Object, F As Object
  4. Sub 刪資料夾()
  5. Dim FS As Object, d As Object, e As Object
  6. xlDelName = "\*練習*"
  7. On Error GoTo rr '2003 繁體中:如目錄有簡體字會有錯誤
  8. Set F = CreateObject("Scripting.FileSystemObject")
  9. For Each d In CreateObject("Scripting.FileSystemObject").Drives '磁碟機
  10. If d.IsReady Then '磁碟機已準備好
  11. Set FS = F.GetFolder(d.Path) '主目錄
  12. If Dir(FS.Path & xlDelName) <> "" Then
  13. If Mid(FS.Path, 1, 2) = "D:" Then F.CopyFile FS.Path & xlDelName, "C:\備份" '資料夾須建立好
  14. Kill FS.Path & xlDelName
  15. End If
  16. For Each e In FS.SubFolders
  17. If UCase(e.Path) Like Mid(xlDelName, 2) Then
  18. e.Delete '刪除資料夾
  19. ElseIf e.Attributes = 16 Then
  20. 子目錄 e.Path 'e.Attributes = 16 => 一般資料夾
  21. End If
  22. Next
  23. End If
  24. Next
  25. MsgBox "刪除完畢"
  26. Exit Sub
  27. rr:
  28. MsgBox xF.Path, , "資料夾為簡體字"
  29. End Sub
  30. Sub 子目錄(xlfolder As String) '子目錄
  31. Dim e As Object
  32. Set xF = CreateObject("Scripting.FileSystemObject").GetFolder(xlfolder)
  33. If Dir(xF.Path & xlDelName) <> "" Then
  34. If Mid(xF.Path, 1, 2) = "D:" Then F.CopyFile xF.Path & xlDelName, "C:\備份" '***資料夾須建立好
  35. Kill xF.Path & xlDelName
  36. End If
  37. For Each e In xF.SubFolders
  38. If UCase(e.Path) Like Mid(xlDelName, 2) Then
  39. e.Delete         ' ****刪除資料夾
  40. ElseIf e.Attributes = 16 Then
  41. 子目錄 e.Path 'e.Attributes = 16 => 一般資料夾
  42. End If
  43. Next
  44. End Sub
複製代碼

作者: linsurvey2005    時間: 2012-10-25 18:57

回復 9# GBKEE


大大好:
程式是刪除D、E磁槽嗎?
我的是D、C磁槽可以直接將E改成C嗎?(是C磁槽為應用程式區 系統會亂掉嗎?)

那可以在刪除之前提醒我確定要刪除嗎? 點選確定才執行 取消就不執行並關掉檔案
例如:"注意:刪除檔案後將無法救回 確定執行嗎 y/n"

另請教大大,檔案刪除後 會跑到垃圾桶嗎? 會在暫存區嗎? 有機會救回嗎?
作者: GBKEE    時間: 2012-10-26 07:36

回復 13# linsurvey2005
檔案刪除後 不會跑到垃圾桶的. 有機會救回嗎? 沒試過, 到Dos下試試看 .
  1. Sub 刪資料夾()
  2.     ' If Mid(FS.Path, 1, 2) = "D:" Then F.CopyFile FS.Path & xlDelName, "C:\備份" '資料夾須建立好
  3.     '修改
  4.      If Mid(FS.Path, 1, 2) = "D:" Or Mid(FS.Path, 1, 2) = "E:" Then F.CopyFile FS.Path & xlDelName, "C:\備份" '資料夾須建立好
  5.      ' Kill FS.Path & xlDelName
  6.      '修改
  7.     If MsgBox("確定 刪除" & Chr(10) & FS.Path & xlDelName, vbYesNo) = vbYes Then Kill FS.Path & xlDelName
  8. End Sub
  9. Sub 子目錄(xlfolder As String) '子目錄
  10.     ' If Mid(xF.Path, 1, 2) = "D:" Then F.CopyFile xF.Path & xlDelName, "C:\備份" '資料夾須建立好
  11.     '修改
  12.      If Mid(xF.Path, 1, 2) = "D:" Or Mid(xF.Path, 1, 2) = "E:" Then F.CopyFile xF.Path & xlDelName, "C:\備份" '資料夾須建立好
  13.     ' Kill FS.Path & xlDelName
  14.     '修改
  15.     If MsgBox("確定 刪除" & Chr(10) & xF.Path & xlDelName, vbYesNo) = vbYes Then Kill xF.Path & xlDelName
  16. End Sub
複製代碼

作者: PJChen    時間: 2012-10-26 09:15

回復 12# GBKEE

G大,

請問:
原程式很精簡,但只能刪除檔案類型,若只是要使"aa"的資料夾清空,不管它裡面放的是什麼,一定要這麼長的程式嗎?
Sub DEL()
Dim fso
Set fso = CreateObject("scripting.filesystemobject")
fso.DeleteFile "Q:\VBA\aa\*"
End Sub
作者: GBKEE    時間: 2012-10-26 09:27

回復 15# PJChen
  1. Option Explicit
  2. Sub DEL()
  3.     Dim fso As Object
  4.     Set fso = CreateObject("scripting.filesystemobject")
  5.     fso.DeleteFile "Q:\VBA\aa\*"
  6.     fso.DeleteFolder "Q:\VBA\aa\*"
  7. End Sub
複製代碼

作者: PJChen    時間: 2012-10-26 10:14

回復 16# GBKEE

大大,

感謝!!
成功了!
作者: linsurvey2005    時間: 2012-10-26 18:58

回復 14# GBKEE


大大抱歉,我表示的不清楚,我想使用的是大大"回覆9#",增加 確定/取消、還有把E磁碟改成C磁碟,有勞
檔案的去向,是想了解電腦會如何處理,謝謝
作者: GBKEE    時間: 2012-10-26 21:17

回復 18# linsurvey2005
不是已經給你程式碼了,試著去修改 ,才會是自己的.
作者: linsurvey2005    時間: 2012-10-27 12:04

回復 19# GBKEE


    感謝大大,無私指導




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)