我有一个计划任务,用于自动清理硬盘上的文件夹;它会删除超过一定天数的文件。
基本上,它会运行一个.bat
包含如下内容的文件:
FORFILES /P "D:\Folder1\SubFolder1" /D -30 /C "cmd /c del /F /Q @path"
FORFILES /P "D:\Folder1\SubFolder4" /D -30 /C "cmd /c del /F /Q @path"
我注意到任务经常永无休止;我不知道为什么。.bat
手动运行时文件会在几分钟内结束,之后文件夹会被清理。
我猜测原因可能是有时会出现这样的提示:
删除 [...] 您确定吗? (Y/N):_
因为子文件夹中的递归删除。请注意,我在命令中添加了/F
并/Q
切换del
。
我如何确保任务能够自动回答Y
可能出现的任何提示?或者这不是我解决问题的途径 - 我应该改进我的.bat
文件吗?
答案1
您的问题似乎是 forfiles 同时找到文件和目录,而您只想删除文件。
请在 /C 命令中尝试此操作:
“cmd /c 如果@isdir==FALSE del@path”
如果 forfiles 迭代器没有指向目录,这才会触发 del 命令。
至少现在我会省略 -q,看看是否一切顺利。但我认为,如果你瞄准正确的目标,你不应该需要/想要抑制确认问题。
此外,仅当您要删除只读文件时才需要 /f。仅当您确定有必要时才强制执行 :)
祝你好运,希望这会有帮助。