![Como posso procurar pastas recursivamente usando `IF NOT EXIST`?](https://rvso.com/image/1555385/Como%20posso%20procurar%20pastas%20recursivamente%20usando%20%60IF%20NOT%20EXIST%60%3F.png)
Quero criar um script em lote que procure recursivamente diretórios especificados usando IF NOT EXIST
para gerar um erro se as pastas não puderem ser localizadas em nenhum lugar. Aqui está o que tenho até agora:
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
Substituirei %FOLDER1%
, %FOLDER2%
, %FOLDER3%
por nomes diferentes dependendo das circunstâncias e de quais pastas precisam ser limpas. Parece que meu script atual procura apenas arquivos. Como devo definir diretórios com esta sintaxe?
Responder1
Incluí uma maneira fácil de fazer isso e manter a lista de pastas dentro do mesmo script para que você possa fazer alterações conforme necessário abrindo o script e modificando-o de acordo.
Essencialmente isto iráchamara :List
sub-rotina que conterá a Arrary
variável e seus valores separados por vírgulas e entre aspas duplas para cada caminho de pasta que você deseja verificar. Em seguida, ele GOTO :EOF
passará o controle de volta ao original CALL
e, em seguida, com um simplesparaloop, você pode iterar os %Array%
valores das variáveis um por um em relação à IF NOT EXIST
lógica.
@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