Ответ 1
Когда вы вызываете другой .bat файл, мне кажется, вам нужно "позвонить" перед вызовом:
call otherCommand.bat
Я пытаюсь написать Windows cmd script для выполнения нескольких задач последовательно. Однако он всегда останавливается после первой команды в script.
Команда, которую он останавливает после, является сборкой maven (не уверен, что это актуально).
Как мне заставить его выполнять и запускать каждую задачу в свою очередь, пожалуйста?
Установка какого-либо программного обеспечения или настройка реестра и т.д. полностью исключена - он должен работать на установке Windows Vista для Windows, я боюсь.
В идеале я хотел бы, чтобы script прерывался, если какая-либо из команд не удалась, но что "приятно иметь", не важно.
Спасибо.
Когда вы вызываете другой .bat файл, мне кажется, вам нужно "позвонить" перед вызовом:
call otherCommand.bat
Вы можете использовать && символ между командами для выполнения второй команды, только если первое выполнено успешно. Подробнее здесь http://commandwindows.com/command1.htm
Не знаю, почему первая команда останавливается. Если вы можете сделать это параллельно, вы можете попробовать что-то вроде
start cmd.exe /C 1.bat
start cmd.exe /C 2.bat
Я только что выполнял то же самое (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 в пакетном файле.
Я не знаю прямого ответа на ваш вопрос, но если вы сделаете много этих сценариев, возможно, стоит изучить более мощный язык, такой как perl. Для Windows существуют бесплатные реализации (например, activestate, cygwin). Я нашел, что это стоит первоначальных усилий для моих собственных задач.
Edit:
Как было предложено @Ferruccio, если вы не можете установить дополнительное программное обеспечение, рассмотрите vbscript и/или javascript. Они встроены в узел сценариев Windows.
Если вы работаете в Windows, вы можете использовать следующую команду.
Привод:
cd "Script location"
schtasks /run /tn "TASK1"
schtasks /run /tn "TASK2"
schtasks /run /tn "TASK3"
exit
Использование двойных амперсандов будет запускать вторую команду, только если первая успешно выполнена:
cd Desktop/project-directory && atom .
Если as, используя только один амперсанд, попытается запустить обе команды, даже если первый сбой:
cd Desktop/project-directory & atom .
Обратите внимание, что вам не нужны точки с запятой в пакетных файлах. И причина, по которой вам нужно использовать вызов, заключается в том, что сам mvn является пакетным файлом, а пакетные файлы должны звонить друг другу с вызовом, иначе управление не возвращается к вызывающему.