`IF NOT EXIST` を使用してフォルダーを再帰的にスキャンするにはどうすればよいですか?

`IF NOT EXIST` を使用してフォルダーを再帰的にスキャンするにはどうすればよいですか?

フォルダーがどこにも見つからない場合にエラーをスローするために、指定されたディレクトリを再帰的に検索するバッチ スクリプトを作成したいと思います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制御を元に戻し、単純なArraryGOTO :EOFCALLのために%Array%loop を使用すると、ロジックに対して変数の値を 1 つずつ反復処理できます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

その他のリソース

関連情報