Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 可以从Jenkins运行两个批处理文件吗?_Batch File_Jenkins - Fatal编程技术网

Batch file 可以从Jenkins运行两个批处理文件吗?

Batch file 可以从Jenkins运行两个批处理文件吗?,batch-file,jenkins,Batch File,Jenkins,我有以下情况。在詹金斯,我有一个在不同环境下运行的构建。这就是为什么我使用带有两个选项的参数构建PROD/TEST。生成正在使用参数PROD或TEST调用shell脚本 下面是jenkins调用的脚本A的示例: if %1%==TEST( start F:\test.bat ) 脚本A本身正在调用另一个脚本-B 下面是脚本B的示例: copy test.xt copyFolder\ 问题是Jenkins只调用第一个脚本-A,而第二个脚本B没有运行 为什么会发生这种情况?您需要创建批处理文件

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

下面是jenkins调用的脚本
A
的示例:

if %1%==TEST(
start F:\test.bat
 )
脚本
A
本身正在调用另一个脚本-
B

下面是脚本
B
的示例:

copy test.xt copyFolder\
问题是Jenkins只调用第一个脚本-
A
,而第二个脚本
B
没有运行

为什么会发生这种情况?

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

如果“%~1”=“测试”(
调用F:\test.bat
)
在这里,我想指出一些事情:

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

if/I“%~1”=“TEST”(调用“F:\TEST.bat”)

有关这些命令如何工作的详细信息,请参见cmd中的
call/?
if/?

if/I“%~1”==“TEST”(call“F:\TEST.bat”)
?它可以像这样工作