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

问题描述 投票:0回答:1

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

以下是jenkins正在调用的脚本A的示例:

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

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

这是脚本B的示例:

copy test.xt copyFolder\

问题是Jenkins只调用了第一个脚本 - A - 而第二个脚本B没有运行。

为什么会这样?

batch-file jenkins
1个回答
1
投票

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

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

在这里,我想说明一些事情:

  • %1%将被解释为批处理文件的第一个参数(如果有)和额外的百分号(%)。你可能想要第一个参数,所以我用%1%替换了%1。如果它不是您想要的,那么将其替换为您的变量名称,但请记住它不应该以数字开头!
  • %1%~1取代并引用,因为: %~1是指没有任何周围引号的第一个参数。 在if语句中引用值始终是最佳实践,但如果有引号,则比较将失败。
  • ==之间添加了一个空格,只是为了使代码更清晰。

对于单行,请参阅aschipfl's comment,它是:

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

有关这些命令如何工作的更多信息,请参阅cmd中的call /?if /?

© www.soinside.com 2019 - 2024. All rights reserved.