![`IF NOT EXIST` を使用してフォルダーを再帰的にスキャンするにはどうすればよいですか?](https://rvso.com/image/1555385/%60IF%20NOT%20EXIST%60%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%BC%E3%82%92%E5%86%8D%E5%B8%B0%E7%9A%84%E3%81%AB%E3%82%B9%E3%82%AD%E3%83%A3%E3%83%B3%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.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%
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