Как заставить Пакетный файл автоматически остановиться на ошибке

Если учетные записи являются физическими пользователями, существует очень мало проблемы. Они должны будут связаться с поддержкой для получения их сброса пароля. Проблема зависит от того, насколько старший человек и сколько проблемы вовлечено в них связывающийся с поддержкой; удаленный пользователь с ноутбуком собирается испытать больше затруднений, чем кто-то, кто сидит рядом с человеком, который может изменить их пароль.

Если учетная запись используется процессом, проблема зависит от того, известен ли тот пароль и сколько мест могло бы потребовать изменения, если это не.

Обычно, если у Вас нет шаблона делания ошибок, я сомневаюсь, что необходимо волноваться. Очевидно, я не Ваш менеджер.

4
задан 13 January 2015 в 21:16
2 ответа

Нет действительно никакого хорошего способа сделать то, что Вы хотите, учитывая дизайн оболочки в Windows (наследованный от MS-DOS).

Вообще говоря, CMD.EXE и COMMAND.COM беспечно продолжают выполнять пакетные файлы даже перед лицом ошибок. Проверка errorlevel из программ Вы звоните, обо всем, что Вы имеете для обработки ошибок. Большинство уродливых команд оболочки будут рассматривать как программы для выполнения (и, надо надеяться, независимо от того, что программа выполнена, не делает чего-то плохо).

Ошибки в синтаксисе конструкций как if exists или for заставит оболочку прекращать выполнять сценарий. Рассмотрите:

@echo off
if not exits c:\foo.txt echo C:\foo.txt does not exist
echo Continuing on

Вы никогда не будете видеть Continuing on потому что интерпретатор будет бомбить с ошибкой c:\foo.txt was unexpected at this time.. К сожалению, нет никакого способа захватить и обработать ошибки, любят существует с ударом. Когда Вы поражаете ошибку как это мертвые остановки сценария.

В целом обработка ошибок в оболочке Windows очень несложна.

4
ответ дан 3 December 2019 в 03:02
  • 1
    , хорошо что неправильное функционирование причины синтаксических ошибок едва неожиданно, не так ли? ;-) –  Joey 3 July 2010 в 11:34

Спорный менее плохой способ немедленно остановить пакет в случае ошибки - использовать каждую «инструкцию» что-то вроде:

copy% UNEXISTING% C: \ || (Файл эхо-ошибок% UNEXISTING% не существует и EXIT / B 1)

С || в остальном следующая команда в той же строке выполняется, только если уровень ошибки предыдущей команды отличается от 0.

3
ответ дан 3 December 2019 в 03:02

Теги

Похожие вопросы