forfiles
を使用して7日以上経過したファイルを自動的に削除したいと考えています。
以下のコードは、手動で実行し、ファイルの削除に「はい」と応答した場合に機能します。はいをこれに組み込むにはどうすればよいですか?
これは出力です:
E:\>forfiles -p "H:\SHARED\Scans" -s -m *.* -d -7 -c "cmd /c del @path"
Could Not Find H:\SHARED\Scans\.DS_Store
H:\SHARED\Scans\XXX\DOC006.XSM\*, Are you sure (Y/N)?
/ Q/Sを追加してみることができますが、これは実際には本当に望んでいることを実行しない可能性があることに注意してください。
/Q Quiet mode, do not ask if ok to delete on global wildcard
/S Delete specified files from all subdirectories
E:\forfiles -p "H:\SHARED\Scans" -s -m . -d -7 -c "cmd /c del /Q /S @path"
CSCRIPT(VBScriptまたはJScriptを選択)またはPowerShellを使用することをお勧めします。 StackOverflowからこの回答をチェックしてください: https://stackoverflow.com/questions/1575493/how-to-delete-empty-subfolders-with-powershell
同様のタスクを実行するためのvbscriptを次に示します。
Dim fso, folder, folders
Set fso = CreateObject("Scripting.FileSystemObject")
Set parent = fso.GetFolder("H:\SHARED\Scans")
Set folders = parent.SubFolders
' delete any folder older than 7 days
For Each folder in folders
If Abs(DateDiff("d",Date, folder.DateCreated)) > 7 Then
folder.Delete(True) 'force delete
End If
Next
この例では、ユーザーに削除の確認を求めずに、「G:\ db_bk_copies」フォルダー内の3日より古いすべてのファイルを削除します(よろしいですか(Y/N)?)。
forfiles -p "G:\db_bk_copies" -s -m * /D -3 /C "cmd /c del /a-s @path"