我有一个文件夹结构如下:
L:\MyProject\Extract\
Activity Input
**output**
SSIS
Results
Headers
Account Input
**output**
SSIS
Results
Headers
Balance Input
**output**
SSIS
Results
.
.
.
在这里,我需要找到输出文件夹并删除每个“output”文件夹中的所有文件。我正在使用以下脚本:
SET FolderPath=%1
for /f "usebackq" %%a in (`"dir %FolderPath% /ad/b/s output"`) do SET Folder="%%a"
del %Folder%\*.* /Q
但是使用上面的脚本,我可以删除“%% a”中存在的文件(输出文件夹的最后一个路径)。怎么递归...?或者是否有任何数组概念来存储输出文件夹存在的所有路径?
答案 0 :(得分:1)
我在你的代码中看到了三个问题。
首先,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
命令,该命令位于环。
解决此问题的一种简单方法是在del
上调用%%a
命令而不设置变量folder
for /f "usebackq delims=" %%a in (`dir "%~1\output" /ad/b/s`) do del %%a\* /q
答案 1 :(得分:0)
您可以使用true
命令查找当前目录的所有子目录。
列出名为find
的所有目录中的文件:
Output
删除名为find . -name Output -type d|find -type f -exec ls {} \;
的目录中的所有文件:
Output