繁体   English   中英

如何使用批处理脚本从“输出”文件夹中删除所有文件?

[英]How to delete all files from “Output” folder using batch script?

我的文件夹结构如下:

L:\MyProject\Extract\
                    Activity    Input
                                **output**
                                SSIS
                                Results
                                Headers
                    Account     Input
                                **output**
                                SSIS
                                Results
                                Headers
                    Balance     Input
                                **output**
                                SSIS
                                Results
                    .
                    .
                    .

在这里,我需要找到输出文件夹并删除每个“输出”文件夹中存在的所有文件。 我正在使用以下脚本:

SET FolderPath=%1

for /f "usebackq" %%a in (`"dir %FolderPath% /ad/b/s output"`) do SET Folder="%%a"
del %Folder%\*.* /Q

但是使用上面的脚本,我可以删除“ %% a”(输出文件夹的最后路径)中存在的文件。 如何递归执行...? 还是有任何数组概念来存储存在输出文件夹的所有路径?

我在您的代码中看到了三个问题。

第一, for循环没有找到output下的子目录FolderPath过的所有子目录,但迭代FolderPath

解决此问题的一种方法是指定

for /f "usebackq" %%a in (`dir "%FolderPath%\output" /ad/b/s`) do 

请注意,我已经移了引号,只是为了准备带空格的名称,这是您的第二个问题。 您可能会进一步简化它

for /f "usebackq delims=" %%a in (`dir "%~1\output" /ad/b/s`) do 

请注意, delims避免空格作为分隔符, %~1删除参数的引号

最后,在每次迭代中, for循环仅set Folder变量,它不会调用放置在循环外部的del命令。

解决此问题的一种简单方法是在%%a上调用del命令,而无需设置变量folder

for /f "usebackq delims=" %%a in (`dir "%~1\output" /ad/b/s`) do del %%a\* /q

您可以使用find命令查找当前目录的所有子目录。

要列出所有名为Output目录中的文件:

find . -name Output -type d|find -type f -exec ls {} \;

要删除名为Output目录中的所有文件:

find . -name Output -type d|find -type f -exec rm {} \;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM