我希望使用 来自动删除超过 7 天的文件forfiles
。
当我手动执行并响应“是”以删除文件时,以下代码有效。我如何将“是”合并到其中?
这是输出:
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)?
答案1
您可以尝试添加 /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
答案2
此示例将删除文件夹“G:\db_bk_copies”中超过 3 天的所有文件,而不要求用户确认删除(您确定吗(Y/N)?):
forfiles -p "G:\db_bk_copies" -s -m * /D -3 /C "cmd /c del /a-s @path"
答案3
验证文件不是隐藏文件或系统文件。
如果系统尝试:
forfiles -p "H:\SHARED\Scans" -s -m *.* -d -7 -c "cmd /c del /a-s @path"
如果隐藏,请尝试:
forfiles -p "H:\SHARED\Scans" -s -m *.* -d -7 -c "cmd /c del /a-h @path"