.bat无意中删除子目录

时间:2015-07-31 09:31:11

标签: batch-file for-loop command-prompt

pushd "\\svr01\folderA\"     
forfiles /P . /D -2 /C "cmd /C del /Q @path && cmd /c echo [%DATE%%TIME%] Deleted file @path" >> %LOGFILE%    
popd

为什么要删除子目录的内容? :F 除非我在命令

中包含“/ S”,否则我认为不会

似乎“IF @ ISDIR == FALSE echo”是修复?

forfiles /P . /D -2 /C "cmd /C IF @ISDIR==FALSE del /Q @path && cmd /c echo [%DATE%%TIME%] Deleted file @path" >> %LOGFILE%  

2 个答案:

答案 0 :(得分:2)

它不会删除目录的全部内容,但会删除目录中的所有文件

引用DEL帮助:

  

DEL [/ P] [/ F] [/ S] [/ Q] [/ A [[:] attributes]]姓名

     

names:指定一个或多个文件或目录的列表。                   通配符可用于删除多个文件。 如果是                   指定目录,目录中的所有文件                   将被删除。

修改:是的,@isdir检查可以避免此问题。

答案 1 :(得分:0)

DEL Delete one or more files.

  

如果给出文件夹名称而不是文件,则该文件夹中的所有文件   将被删除,但文件夹本身不会被删除。

使用if /I "@isdir"=="FALSE"进行检查,如下所示:

forfiles /P . /D -2 /C "cmd /C if /I "@isdir"=="FALSE" (del /Q @path && echo [%DATE% %TIME%] Deleted file @fdate @path")