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", но ни один из этих вариантов не работает так, как мне нужно. Любые предложения о том, как мне это исправить?

0 ответов

Другие вопросы по тегам