我一直在尝试编写一个批处理文件,用于删除超过x
天数的文件。我有一个备份目录E:\Backup2
,其中包含许多子文件夹Alresco
,Postgres
和Sybase
。
这些子文件夹包含不同的文件内部结构,但我不认为这会影响脚本,因为我只需要查看Backup2
目录中的每个文件,如果它早于{ {1}}天然后删除该文件。
到目前为止,我有以下内容,但我无法让它发挥作用:
x
其中FORFILES /P "E:\Backup2" /S /D -2 /C "CMD DEL /F /Q @PATH"
定义文件在删除之前必须保留的天数。
当我在2
中执行命令时,所有文件都保留,没有报告任何错误。
有趣的是,当我输出到日志文件时,它会报告第一个文件所在的目录。
当我第一次运行该命令时,日志文件报告CMD
但是当我将日志文件移动到根目录并重新运行comman时,日志文件报告E:\Backup2\Alfresco\25072015
,这表明该命令正在查找它需要删除然后中断的第一个日志文件。
答案 0 :(得分:1)
从找到的文档here中,他们有以下示例:
Examples:
Delete the testfile if it is is 5 days old or older:
C:\> forfiles /m testfile.txt /c "cmd /c Del testfile.txt " /d -5
Find .xls file that were last modified 30 days ago or older
C:\> FORFILES /M *.xls /C "cmd /c echo @path was changed 30 days ago" /D -30
List the size of all .doc files:
C:\> FORFILES /S /M *.doc /C "cmd /c echo @fsize"
与您的代码相比,您在调用cmd del时似乎错过了/ c,因此您的代码应为:
FORFILES /P "E:\Backup2" /S /D -2 /C "CMD /c DEL /F /Q @PATH"