Как вернуть код ошибки без закрытия окна командной строки?

Я пишу командный файл, который проверяет пару файлов. Если один из файлов недействителен, я хочу, чтобы пакет script остановился и вернул код ошибки > 0. Следующий код, похоже, выполняет эту работу, но вызов "EXIT 2" закрывает окно командной строки, в котором работает script.

:Validate
SETLOCAL
Validator %1
IF %ERRORLEVEL% GEQ 1 EXIT 2
ENDLOCAL

Любая идея о том, как вернуть код ошибки без закрытия командной строки?

Ответ 1

Чтобы получить помощь для команд командной строки, используйте их /? вариант. Exit /? показывает:

Выход из программы CMD.EXE(командный интерпретатор) или текущей партии script.

EXIT [/B] [exitCode]

/B указывает на выход из текущей партии script вместо               CMD.EXE. Если выполняется извне пакет script, он               выйдет из CMD.EXE

exitCode указывает числовое число. если задано /B, наборы               ERRORLEVEL это число. Если вы покинете CMD.EXE, задайте процесс               код выхода с этим номером.

Итак, вы хотите

IF %ERRORLEVEL% GEQ 1 EXIT /B 2

Ответ 2

Вы можете использовать команду pause перед вызовом exit.

Если вам не нравится сообщение:

pause > nul

Ответ 3

Получается та же проблема. Если вы пишете пакет (оболочка Windows script). ' cmd' должен сделать это за вас. это не приведет к выходу из пакета и останется в командной строке. Решила мою проблему. например: cd "\view\Flex Builder 3\gcc-mvn" set path="c:\view\jdk1.7.0_02\bin";"c:\view\apache-maven-3.0.5\bin";%path% mvn sonar:sonar cmd должен оставаться в строке после выполнения.