调整forfiles命令以查看文件夹而不是文件

时间:2016-02-10 08:48:35

标签: batch-file recursion

我编写了一个备份命令,用于删除E:\Backup\ldap目录中超过两天的文件。我已经测试过了,这很好。

(forfiles /p E:\Backup\ldap /s /d -2 /c "cmd /c echo @path >> E:\Backup\files_deleted_log_%date:~-10,2%%date:~-7,2%%date:~-4,4%.txt & cmd /c del /q @path")

我正在调整此命令以便它查看指定目录中的顶级文件夹,并且如果文件夹及其内容超过两天,则递归删除该文件夹及其内容。

(forfiles /p E:\Backup\Sybase /d -2 /c "cmd /c if @isdir == true echo @path >> E:\Backup\files_deleted_log_%date:~-10,2%%date:~-7,2%%date:~-4,4%.txt & cmd /c if @isdir == true del /s /q @path")

我从前一个文件命令中取出了第一个/s,因为我不想递归搜索,我只想查看E:\Backup\Sybase目录中顶级文件夹的最后修改日期

我还添加了if @isdir == true来确定文件是否是文件夹,并更新了删除命令以包含/s,以便执行递归删除。

每次执行命令时,都不会删除任何内容。

1 个答案:

答案 0 :(得分:0)

在使用if @ISDIR==TRUE递归删除目录之前,我使用RD来确定文件是否是目录。

(forfiles /p E:\Backup\Sybase /d -2 /c "CMD /C if @ISDIR==TRUE echo @PATH >> E:\Backup\files_deleted_log_%date:~-10,2%%date:~-7,2%%date:~-4,4%.txt & if @ISDIR==TRUE RD /Q /S @FILE")