Como posso procurar pastas recursivamente usando `IF NOT EXIST`?

Como posso procurar pastas recursivamente usando `IF NOT EXIST`?

Quero criar um script em lote que procure recursivamente diretórios especificados usando IF NOT EXISTpara 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 :Listsub-rotina que conterá a Arraryvariá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 :EOFpassará o controle de volta ao original CALLe, em seguida, com um simplesparaloop, você pode iterar os %Array%valores das variáveis ​​um por um em relação à IF NOT EXISTló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

Recursos adicionais

informação relacionada