是否可以从Jenkins运行两个批处理文件?

时间:2019-02-25 10:25:06

标签: batch-file jenkins

我有以下情况。在詹金斯,我有一个正在不同环境运行的构建。这就是为什么我要使用带有两个选项PROD/TEST的参数进行构建的原因。该构建正在调用带有参数PRODTEST的Shell脚本。

以下是詹金斯正在调用的脚本A的示例:

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

脚本A本身正在调用另一个脚本-B

以下是脚本B的示例:

copy test.xt copyFolder\

问题在于Jenkins仅调用第一个脚本A-,而第二个脚本B无法运行。

为什么会这样?

1 个答案:

答案 0 :(得分:1)

您将需要call而不是start批处理文件,因为它会创建一个新的cmd.exe实例,因此它可以异步运行被调用的批处理文件(如jeb { {3}}):

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

在这里,我要注意一些事情:

  • %1%将被解释为批处理文件的第一个参数 (如果有)和一个额外的百分号({{1 }})。您可能在这里想要第一个参数,所以我用%代替了%1%。如果不是您想要的,请用您的变量名替换它,但请记住,它不能以数字开头!
  • %1%1取代并被引用是因为:
    • %~1表示第一个不带引号的参数。
    • %~1语句中引用值始终是最佳做法,但是如果有引号,则比较将失败。
  • if之间添加了一个空格,目的是使代码更清晰。

有关单线的信息,请参见here,它是:

==

有关这些命令的工作方式的更多信息,请参见cmd中的if /I "%~1"=="TEST" (call "F:\test.bat") call /?