如何使用批处理脚本从 "Output" 文件夹中删除所有文件?
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
.
.
.
在这里,我需要找到输出文件夹并删除每个 "output" 文件夹中的所有文件。我正在使用以下脚本:
SET FolderPath=%1
for /f "usebackq" %%a in (`"dir %FolderPath% /ad/b/s output"`) do SET Folder="%%a"
del %Folder%\*.* /Q
但是使用上面的脚本,我能够删除存在于“%%a”(输出文件夹的最后一个路径)中的文件。如何递归地做...?或者是否有任何数组概念来存储存在 output 文件夹的所有路径?
我发现您的代码存在三个问题。
首先,for
循环没有找到FolderPath
下的output
子目录,而是遍历了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
s 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 {} \;
我的文件夹结构如下:
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”(输出文件夹的最后一个路径)中的文件。如何递归地做...?或者是否有任何数组概念来存储存在 output 文件夹的所有路径?
我发现您的代码存在三个问题。
首先,for
循环没有找到FolderPath
下的output
子目录,而是遍历了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
s 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 {} \;