自动对 forfiles 回复“是”

自动对 forfiles 回复“是”

我希望使用 来自动删除超过 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"

相关内容