Как рекурсивно сканировать папки, используя `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, которая будет содержать 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

Дополнительные ресурсы

Связанный контент