#batch-file #jenkins #cmd
#пакетный файл #дженкинс #cmd
Вопрос:
У меня проблема в моем задании дженкинса, и я выделил его в одну команду. Поэтому я создал другое отдельное задание, чтобы попытаться это исправить.
Итак, в этом задании, называемом «teste», у меня есть только одна команда:
start cmd /k call "C:Program FilesmyDirmyBat.bat"
Откроется отдельное окно cmd, в котором запускается мой bat-файл, который должен продолжать работать «вечно».
Но проблема в том, что когда я это делаю, мое задание дженкинса продолжает зависать в операции «exit 0», и я понятия не имею, откуда оно взялось. Это консоль:
[EnvInject] - Loading node environment variables.
Building remotely on Machine01 in workspace C:workspaceteste
[teste] $ cmd /c call C:...dirjenkins.bat
C:workspaceteste>start cmd /k call "C:Program FilesmyDirmyBat.bat"
C:workspaceteste>exit 0
Затем оно продолжает зависать на этом этапе.
Пример содержимого myBat.bat:
echo hi
pause
Есть какой-нибудь способ выполнить этот вызов в другом окне, не дожидаясь его завершения?
Комментарии:
1. Попробуйте
start "" cmd /k "C:Program FilesmyDirmyBat.bat"
…2. Спасибо @aschipfl, но не сработало .. по-прежнему та же проблема
3. На самом деле, позвольте мне объяснить другими словами. Я хотел бы запустить один bat-файл в другом окне (что уже выполняется), но независимо от того, что произойдет с этим другим скриптом, я просто хотел бы иметь возможность завершить мою текущую консоль (задание). Итак, проблема в том, что задание дженкинса продолжает выполняться вечно, и я бы хотел, чтобы оно завершилось после запуска этого «start cmd / k ….»
4. Хорошо, @Compo, я добавил содержимое, которое вы можете поместить в файл .bat для имитации. Он ведет себя точно так же. Поскольку оно приостановлено, новый cmd никогда не заканчивается, но мой основной cmd по-прежнему не завершается. Если кто-нибудь заставит это работать с этим скриптом, вы спасете мне жизнь.
5. @Compo содержимое этого jenkins.bat — это именно та строка, которая выделена вверху! Эта строка была напечатана самим дженкинсом, когда он помещал весь мой скрипт в один файл на сервере и выполнял его. В скрипте моего задания есть только одна строка, которую я уже предоставил! запустите вызов cmd / k «C:Program FilesmyDir myBat.bat»
Ответ №1:
Я решаю свою проблему, изменяя способ, которым я вызывал свой other .bat, вызывая его через powershell. Но поскольку я был из bat-файла, я использовал команду для отправки команды powershell, вызывающей мой другой bat-файл. Кроме того, я добавил еще одну строку, меняющую jenkins BUILD_ID на поддельный, поэтому это не убивает его.
Итак, я изменил эту строку:
start cmd /k call "C:Program FilesmyDirmyBat.bat"
К этому :
set BUILD_ID=dontKillMe
powershell -Command "Start-Process 'C:Program FilesmyDirmyBat.bat'"
Я надеюсь, что это кому-нибудь когда-нибудь поможет.