我想要用vbs實現定期搬移和刪除舊檔案
我在網路上有看到一篇文章
http://blog.lyhdev.com/2007/05/vbscript.html
上面的方式我可以成功把特定資料夾下過期的檔案刪除
但是無法把"子資料夾"裡面的過期檔案也刪除
請問要加哪些參數才可以把"子資料夾"裡面的特定檔案也刪除呢?
最好可以把完整的程式碼加說明附上,不然我很難理解~~~~
原諒我是菜鳥!!
要我看別人的程式碼,然後加以修改,這個我沒辦法
因為每個人的邏輯想法都不一樣
所以只好用自己的邏輯寫一個還算堪用的幾行程式
<pre class="c" name="code">
' 指定所有變數必須事先宣告才能使用
Option Explicit
WScript.Echo("作業開始執行:" & Date & " " & Time)
' 宣告變數
Dim FSO, agoDays, modifiedDate, delFolder
' 請將下面的變數值換成你要的
' == 開始 ==
' 指定 n 天前的檔案,現在是 3 天前
agoDays = 3
' 欲刪除檔案所在之目錄
delFolder = "D:\Temp"
' == 結束 ==
' 建立檔案系統物件(File System Object)
Set FSO = CreateObject("Scripting.FileSystemObject")
' 取得檔案的修改日期
modifiedDate = DateAdd("d", -agoDays, Date)
' 呼叫刪除檔案的子程序
DelFilesInFolder FSO.GetFolder(delFolder)
' 刪除檔案的子程序
Sub DelFilesInFolder(folder)
' 宣告變數
Dim file, subFolder
' 找出目前所在目錄內所有的檔案
For Each file In folder.Files
' 檢查檔案日期是否符合條件,若符合,就刪除
If ((file.DateLastModified <= modifiedDate)) Then
file.delete
End If
Next
' 如果遇到子目錄,也要進去檢查並刪除
For Each subFolder in folder.SubFolders
DelFilesInFolder subFolder
Next
End Sub
WScript.Echo("作業執行完畢:" & Date & " " & Time)
如果子資料夾沒有名稱重複的疑慮
加在
For Each subFolder in folder.SubFolders
的下一行做名稱的過濾就可以了
你的狀況是怎樣?是要刪除的目錄有很多個,而且都在不同的地方,像這樣:
D:\Temp
C:\1234
C:\3423
D:\A134
D:\eepc
阿,如果是這樣,可以把目錄當作參數傳進去,然後用下面的方法把參數所代表的目錄取出來
Set myArgs = WScript.Arguments
delFolder = myArgs(0)
假設那個 vbs 的檔名叫做 DelFolders.vbs,就可以用下面這樣的方法去呼叫
DelFolders.vbs D:\Temp
DelFolders.vbs C:\1234
DelFolders.vbs C:\3423
DelFolders.vbs D:\A134
DelFolders.vbs D:\eepc
有點不懂您的意思
Set myArgs = WScript.Arguments
delFolder = myArgs(0)
這邊我懂
可是
DelFolders.vbs D:\Temp
DelFolders.vbs C:\1234
DelFolders.vbs C:\3423
DelFolders.vbs D:\A134
DelFolders.vbs D:\eepc
這邊我就不太知道怎樣呼叫
另外,我的情況比較像是樓上myepaper01 所說的
應該是要過濾名稱
可是~我還不懂!!
原諒我是程式門外漢
我很努力的問google,不過對於沒有基礎的人實在是很辛苦!!