簡體   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