Выполнение нескольких команд из Windows cmd script

Я пытаюсь написать Windows cmd script для выполнения нескольких задач последовательно. Однако он всегда останавливается после первой команды в script.

Команда, которую он останавливает после, является сборкой maven (не уверен, что это актуально).

Как мне заставить его выполнять и запускать каждую задачу в свою очередь, пожалуйста?

Установка какого-либо программного обеспечения или настройка реестра и т.д. полностью исключена - он должен работать на установке Windows Vista для Windows, я боюсь.

В идеале я хотел бы, чтобы script прерывался, если какая-либо из команд не удалась, но что "приятно иметь", не важно.

Спасибо.

Ответ 1

Когда вы вызываете другой .bat файл, мне кажется, вам нужно "позвонить" перед вызовом:

call otherCommand.bat

Ответ 2

Вы можете использовать && символ между командами для выполнения второй команды, только если первое выполнено успешно. Подробнее здесь http://commandwindows.com/command1.htm

Ответ 3

Не знаю, почему первая команда останавливается. Если вы можете сделать это параллельно, вы можете попробовать что-то вроде

start cmd.exe /C 1.bat      
start cmd.exe /C 2.bat

Ответ 4

Я только что выполнял то же самое (ish) задачу создания пакета script для запуска тестовых скриптов maven. Проблема в том, что вызов maven-скриптов с помощью mvn clean install... сам является script, и поэтому это нужно сделать с вызовом mvn clean install.

Код, который будет работать

rem run a maven clean install
cd C:\rbe-ui-test-suite 
call mvn clean install
rem now run through all the test scripts
call mvn clean install -Prun-integration-tests -Dpattern=tc-login
call mvn clean install -Prun-integration-tests -Dpattern=login-1

Обратите внимание, что использование вызова. Это позволит использовать последовательные скрипты maven в пакетном файле.

Ответ 5

Я не знаю прямого ответа на ваш вопрос, но если вы сделаете много этих сценариев, возможно, стоит изучить более мощный язык, такой как perl. Для Windows существуют бесплатные реализации (например, activestate, cygwin). Я нашел, что это стоит первоначальных усилий для моих собственных задач.

Edit:

Как было предложено @Ferruccio, если вы не можете установить дополнительное программное обеспечение, рассмотрите vbscript и/или javascript. Они встроены в узел сценариев Windows.

Ответ 6

Если вы работаете в Windows, вы можете использовать следующую команду.

Привод:

cd "Script location"
schtasks /run /tn "TASK1"
schtasks /run /tn "TASK2"
schtasks /run /tn "TASK3"
exit

Ответ 7

Использование двойных амперсандов будет запускать вторую команду, только если первая успешно выполнена:

cd Desktop/project-directory && atom .

Если as, используя только один амперсанд, попытается запустить обе команды, даже если первый сбой:

cd Desktop/project-directory & atom .

Ответ 8

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