Можно ли запустить два пакетных файла от Jenkins? - PullRequest
0 голосов
/ 25 февраля 2019

У меня следующий случай.В Дженкинс у меня есть одна сборка, которая работает на разных средах.Вот почему у меня есть сборка с параметрами с двумя параметрами PROD/TEST.Сборка вызывает скрипт оболочки с параметром PROD или TEST.

Вот пример скрипта A, который вызывает jenkins:

if %1%==TEST(
start F:\test.bat
 )

Скрипт Aсам вызывает другой скрипт - B.

Вот пример скрипта B:

copy test.xt copyFolder\

Проблема в том, что Дженкинс только вызывает первый скрипт - A - ивторой скрипт B не запускается.

Почему это происходит?

1 Ответ

0 голосов
/ 25 февраля 2019

Вам потребуется call пакетный файл, а не start, потому что он создает новый экземпляр cmd.exe, чтобы он мог асинхронно запускать вызываемый пакетный файл (как упоминается в jeb *)1006 * здесь ):

if "%~1" == "TEST" (
    call F:\test.bat
)

Здесь я хочу отметить некоторые вещи:

  • %1% будет интерпретироваться как первый аргументпакетный файл (если есть) и дополнительный знак процента (%) .Вы, вероятно, хотели здесь первый аргумент, поэтому я заменил %1% на %1.Если это не то, что вы хотели, то замените его на имя вашей переменной, но помните, что оно не должно начинаться с цифры!
  • %1 было заменено на %~1 и заключено в кавычки, потому что:
    • %~1 означает первый аргумент без любых окружающих кавычек.
    • Использование значений в выражении if всегда является наилучшей практикой, но если были кавычки, сравнениепотерпит неудачу.
  • Добавлен пробел между ==, только для того, чтобы сделать код более понятным.

Для однострочников см. aschipfl'sкомментарий , это:

if /I "%~1"=="TEST" (call "F:\test.bat")

См. call /? и if /? в cmd для получения дополнительной информации о том, как работают эти команды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...