2012-02-14 2 views
1

Когда я копирую/вставляю строки ниже в CMD-окно, он выполняется без проблем.bat-скрипт работает только в первой строке?

"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat" 
msbuild proj\projsln /p:Configuration=Debug 
proj\proj\bin\Debug\proj.exe my args 

Однако, когда я сохранить его как DoStuff.bat я получаю сообщение ниже (это текст от исполняющего vcvars32.bat), то ничего другого. Он не создает мой проект и, очевидно, не запускает вновь созданный исполняемый файл.

Почему это не так и как я могу запустить все три команды?

>"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat" 
Setting environment for using Microsoft Visual Studio 2010 x86 tools. 
+1

Возможный дубликат [Почему выполняется только первая строка этого командного файла Windows, но все три строки выполняются в командной оболочке?] (Http://stackoverflow.com/questions/4036754/why-does-only-the -first-line-of-this-windows-batch-file-execute-but-all-three-li) – user

ответ

9

Используйте CALL для вызова другого командного файла.

+0

Да, это так. Спасибо (SO заставляет меня ждать, чтобы принять) –

+1

Для тех, кто смущен, причина, по которой это необходимо в этом случае, состоит в том, что сценарий вызывает другой скрипт. Команда 'call' необходима, чтобы окна знали, что необходимо продолжить выполнение исходного скрипта при завершении второго скрипта:' Вызывает одну пакетную программу от другой, не останавливая родительскую пакетную программу' – lightswitch05

0

Ну, должна быть причина, по которой это не продолжается. Это то, что команда ждет ввода? Это все, что я могу придумать. Попробуйте перенаправить вывод командного файла в журнал и посмотреть, что происходит.

В качестве альтернативы, разделите командный файл на отдельные командные файлы и поместите CALL перед каждым вызовом пакетного файла.

+0

Ooops! Я вижу, что @vulkanino уже дал решение. – Frankline