![如何使用「IF NOT EXIST」遞歸掃描資料夾?](https://rvso.com/image/1555385/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E3%80%8CIF%20NOT%20EXIST%E3%80%8D%E9%81%9E%E6%AD%B8%E6%8E%83%E6%8F%8F%E8%B3%87%E6%96%99%E5%A4%BE%EF%BC%9F.png)
我想製作一個批次腳本,該腳本將遞歸搜尋指定的目錄,IF NOT EXIST
如果資料夾無法位於任何位置,則會拋出錯誤。這是我到目前為止所擁有的:
IF NOT EXIST %FOLDER1% goto :ERROR
IF NOT EXIST %FOLDER2% goto :ERROR
IF NOT EXIST %FOLDER3% goto :ERROR
:ERROR
echo There aren't any folders to clean...
PAUSE goto :END
goto END
我將根據情況和需要清理的資料夾將%FOLDER1%
, %FOLDER2%
,替換為不同的名稱。%FOLDER3%
看來我目前的腳本僅搜尋文件,我應該如何使用此語法定義目錄?
答案1
我為您提供了一種簡單的方法來執行此操作並在同一腳本中維護資料夾列表,以便您可以根據需要透過開啟腳本並相應地修改它來進行更改。
本質上這將稱呼:List
將包含變數及其值的子例程,該Arrary
值以逗號分隔,並為要檢查的每個資料夾路徑用雙引號引起來。然後它將GOTO :EOF
控制權傳回原來的CALL
,然後用一個簡單的為了循環,您可以%Array%
根據邏輯一一迭代變數值IF NOT EXIST
。
@ECHO ON
CALL :List
FOR %%A IN (%Array%) DO (
IF NOT EXIST "%%~A" ECHO %%~A Does Not Exist
)
EXIT
:List
::: Maintain your folder paths in the 'SET Array=' as values enclosed by double quotes and separated by commas
SET Array="C:\Folder\Path1", "X:\\Folder\\Math2", "\\server\Bath3", "c:/Folder/Wrath4"
GOTO :EOF