[英]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.