【问题标题】:Is it possible to run two batch files from Jenkins?是否可以从 Jenkins 运行两个批处理文件?
【发布时间】:2019-07-18 17:31:18
【问题描述】:

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

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

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

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

这里是脚本B的示例:

copy test.xt copyFolder\

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

为什么会这样?

【问题讨论】:

  • if /I "%~1"=="TEST" (call "F:\test.bat")?
  • 它像这样工作

标签: batch-file jenkins


【解决方案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 /?

【讨论】:

    猜你喜欢
    • 2023-04-01
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多