【发布时间】:2021-04-24 08:21:47
【问题描述】:
我需要一个 Windows 脚本来删除超过 1 年的文件:
forfiles /S /P "E:\" /M *.* /D -365 /C "cmd /c echo @path" >> "xxx_log"
我不熟悉 Windows 脚本。
谁能帮帮我?
【问题讨论】:
标签: windows batch-file command-prompt
我需要一个 Windows 脚本来删除超过 1 年的文件:
forfiles /S /P "E:\" /M *.* /D -365 /C "cmd /c echo @path" >> "xxx_log"
我不熟悉 Windows 脚本。
谁能帮帮我?
【问题讨论】:
标签: windows batch-file command-prompt
如果你打算使用windows脚本/批处理文件,但对它们不熟悉,我真的建议你先熟悉一下,否则玩起来可能很危险,尤其是批量删除时...
首先打开命令提示符并输入FORFILES /? 以阅读FORFILES 命令的帮助和DEL /? 的DEL(删除)命令的帮助。
您正在寻找的完整命令是这样的:
FORFILES /S /P "E:\" /M "*" /D -365 /C "CMD /C DEL @path"
其中E:\ 是顶级目录,* 是您要匹配的通配符(例如更改为*.bak 以仅删除扩展名为.bak 的文件),365 是天数(减号表示删除任何超过 365 天的内容)。
【讨论】:
/Q 选项(现已更正),我还建议您无需使用/M 选项,因为它的默认值已经是*。此外,您可能还希望为您的DEL 命令包括一些其他选项,例如它的/A 和/F 选项。此外,由于目的是删除文件,您应该省略可能的目录路径,也使用@ISDIR。示例:FORFILES /P "E:\" /S /D -365 /C "CMD /C IF @ISDIR==FALSE DEL /A /F @PATH".
除了您使用的无效 /Q 选项(现已更正),我还建议您无需使用 /M 选项,因为它的默认值已经是 *.此外,您可能还希望为您的 DEL 命令包括一些其他选项,例如它的 /A 和 /F 选项。此外,由于目的是删除文件,您应该省略可能的目录路径,也使用@ISDIR。示例: FORFILES /P "E:" /S /D -365 /C "CMD /C IF @ISDIR==FALSE DEL /A /F @PATH"。 – 昨天的组合
感谢您的回答。可以用天来代替365吗?
FORFILES /P "E:" /S /D -"01/01/2020" /C "CMD /C IF @ISDIR==FALSE DEL /A /F @PATH" ?谢谢。
【讨论】: