Exist, Rmdir и%errorlevel% в пакетной Windows
Я не думаю, что мой вопрос дублирует пакет: код выхода для "rd" также равен 0 при ошибке, потому что я попробовал все из этого ответа, и это не помогло (как вы можете видеть на скриншотах ниже).
Допустим, я хочу удалить каталог с файлами в нем. Но я не хочу, чтобы скрипт продолжал выполняться в случае ошибки. Поэтому я попытался:
ECHO 3. Deleting Client index folder which will be rebuilt if it actually exist...
rmdir /S /Q "XXX"
ECHO %ERRORLEVEL%
IF %ERRORLEVEL% NEQ 0 ECHO Failed to delete client index folder... & GOTO :End
Но переменная%ERRORLEVEL% всегда была равна 0.
Затем я нашел похожие вопросы по Stackru и изменил скрипт на этот:
ECHO 3. Deleting Client index folder which will be rebuilt if it actually exist...
rmdir /S /Q "XXX" && echo OK || echo ERROR
ECHO %ERRORLEVEL%
IF %ERRORLEVEL% NEQ 0 ECHO Failed to delete client index folder... & GOTO :End
Но проблема в том, что я хочу, чтобы скрипт продолжал работать, если папка не существует (то есть уже удалена). С этой реализацией это не сработало.
Поэтому я изменил сценарий так:
ECHO 3. Deleting Client index folder which will be rebuilt if it actually exist...
if exist "XXX" (rmdir /S /Q "%4_%5" && echo OK || echo ERROR)
ECHO %ERRORLEVEL%
IF %ERRORLEVEL% NEQ 0 ECHO Failed to delete client index folder... & GOTO :End
Aaaaaaa и он перестал настраивать переменную%ErrorLevel% снова в случае блокировки файла...
Я пытался удалить скобки после "существующего" условия. Попытался изменить "если существует" на "2>nul", но ни один из этих вариантов не работает так, как мне нужно. Любые предложения о том, как мне это исправить?