VBScriptでゴミ箱のファイルを削除してみる

| 2009年6月20日土曜日
PowerShellではできたので、VBScriptで指定日以前にごみ箱に捨てたファイルを削除してみる。
PowerShellがもっと流行れば、VBScriptから逃げられるんだけど…その日はまだ遠そうだ。

※ごみ箱の中のフォルダを消そうとすると「実行時エラー:・・・」となるので一度Tempフォルダに移動してからcmdのrmdirで消している。

3日前に削除したファイルをけすなら、cmdなどから

> CScript /nologo DeleteGarbabeFiles.vbs /Date:3

とする。
/Date:3 をつけなければ、一週間前までのを削除する。

--- DeleteGarbabeFiles.vbs ---

If WScript.Arguments.Named("Date") = "" Then
nDays = 6
Else
nDays = Int(WScript.Arguments.Named("Date"))
End If

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Shell.Application")
Set WshShell = CreateObject("WScript.Shell")
Set trash = objShell.NameSpace(10)

For Each item in trash.Items()
If Int(Now() - CDate(trash.GetDetailsOf(item, 2))) >= nDays Then
If objFSO.FileExists(item.Path) Then
objFSO.DeleteFile item.Path
ElseIf objFSO.FolderExists(item.Path) Then
dustFolderPath = objFSO.GetSpecialFolder(2).Path & "_TempDeleteFolder"
objFSO.MoveFolder item.Path, dustFolderPath
delCommand = "cmd.exe /C rmdir /S /Q " & """" & dustFolderPath & """"
WshShell.Run delCommand, 0, true
End If
End If
Next

Set objFSO = Nothing
Set objShell = Nothing
Set WshShell = Nothing
Set trash = Nothing

0 コメント: