прервать команду запуска при сбое выполнения в команде dos

#windows #scripting #batch-file #command

#Windows #сценарии #пакетный файл #команда

Вопрос:

Рассмотрим, a.exe отсутствует в папке D:temp

 cd /d D:temp
 .a.exe 
 .b.exe

Я хочу выполнить a.exe сначала, и я должен дождаться его завершения, а затем я хочу выполнить b.exe . Если consider a.exe отсутствует в этом пути, то он выдает сообщение об ошибке, как показано ниже, а затем начинает выполнение следующей команды b.exe .

 .a.exe не распознается как внутренняя или внешняя команда

Но если я выполню этот exe-файл с помощью start, он отобразит сообщение об ошибке в одном диалоговом окне.

 cd /d D:temp 
 запустить / подождать. a.exe 
 запустить / подождать.b.exe

Я не хочу такого поведения. Я хочу выполнить только с start /wait , но если этого exe-файла там нет, он должен вернуться к следующей команде.

Примечание: я не хочу проверять, присутствует ли exe или нет перед запуском, как указано ниже

 cd /d D:temp
 ЕСЛИ НЕ СУЩЕСТВУЕТ. a.exe выход 1 
 запустить / подождать. a.exe 
 запустить / подождать. b.exe

Комментарии:

1. Почему бы и нет? : «Я не хочу проверять, присутствует ли exe или нет перед запуском, как указано ниже»

2. Итак, вы хотите знать, если a.exe есть, но вы не хотите проверять, есть ли она там? Звучит немного противоречиво для меня. В чем проблема с проверкой, если a.exe есть ли?

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

4. Это в командном файле, или вы вводите эти команды вручную? В командном файле вам не нужно использовать start / wait; он все равно будет ждать.

5. @HarryJohnston Я знаю, что выполнение пакетного сценария будет ждать, даже если я не использую start /wait для выполнения. Но я хочу, чтобы это выполнение должно было произойти в новом окне.

Ответ №1:

Это позволит избежать диалогового окна:

 start /wait cmd /c .a.exe
  

Ответ №2:

 ./a.exe 2> nul
  

Этот способ вызова подавляет сообщение об ошибке.

Комментарии:

1. ./a.exe 2> nul не возвращает никакого сообщения об ошибке. Но я попробовал ‘start./a.exe 2> null` это возвращает сообщение об ошибке в диалоговом окне