2

Я создал пакетный скрипт (полное представление см. Здесь), чтобы сначала запустить некоторые службы, а затем приложение. После того, как приложение завершено, предполагается, что пакет где-то находится в GOTO somewhere но он ожидает выхода из программы, чтобы продолжить работу.

Заголовок для запуска приложения и продолжения:

:vmSTARTAPP
    "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe"
    IF NOT %BACK%==NULL GOTO %BACK%
    GOTO STARTAPPCONT

Этот заголовок вызывается из другого заголовка:

:STARTAPP
    cls
    echo Starting Application
    GOTO %BATCH%

%BATCH% содержит имя для следующего заголовка - в указанном выше случае vmSTARTAPP .

Если я запускаю его из нового окна командной строки, он работает нормально, только не в этом пакете.

Что я делаю неправильно?

PS Не относите этот вопрос к моему предыдущему вопросу. Это совершенно другой случай.

1 ответ1

1

Не могли бы вы попробовать заменить ваши строки, которые показывают

:vmSTARTAPP
    "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe"

с

:vmSTARTAPP
    start "Starting VMWare" /B "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe"

Я предполагаю, что вы хотите тихо запустить VMWare и продолжать без остановки, и это должно, теоретически, сделать это.

Команда start инструктирует DOS выполнить команду, которую вы ей передаете (в данном случае «C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe»), и по умолчанию не ожидает передачи команды, которую вы передаете. он возвращается и вместо этого запускает его в отдельном процессе.

По умолчанию каждая строка в пакетном файле запускается последовательно и ждет выполнения каждой строки и возврата, прежде чем перейти к следующей строке. Команда start позволяет обойти это, запустив программу, которую вы передаете в отдельном процессе (окно DOS), и поэтому ваш пакетный файл встречает эту строку, запускает ее, как обычно, видит, что команда start вернулась (после создания нового процесса). запустить вашу команду), и ваш командный файл продолжает, как будто ничего неожиданного не произошло.

Заголовок "Starting VMWare" состоит в том, что заголовок у вновь созданного окна DOS будет иметь этот заголовок, если бы не аргумент /B который говорит ему не показывать новое окно DOS. Название является необходимым, но необязательным, и у меня был случайный момент WTF в сценариях без него, но это скорее исключение, чем правило.

Более подробную информацию о команде «Пуск» можно найти по адресу http://ss64.com/nt/start.html.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .