我正在编写一个管道脚本来调用一个批处理文件,该批处理文件又将调用.wsf脚本。我正在尝试执行一个带有一个参数的批处理文件。参数是文件路径。我可以让Jenkins脚本执行批处理文件,但我不能成功地将文件路径作为参数传递。
.wsf脚本(使用VBScript)使用输入目录构建完整的文件路径。它使用反斜杠,因此我假设传递给批处理文件的路径应该使用反斜杠定义。
我已经尝试了许多不同的建议语法,但没有任何工作。该脚本要么由于语法错误而无法运行,要么只是将变量名作为文字字符串传递,而不是我期望的赋值。
实际的.bat文件的名称中确实有一个&符号,因此我以类似的方式命名了这个示例。
这是我目前正在尝试的:
environment {
ROOT_DIR = 'http:\\\\myserver.mycity.mycompany.com\\svn\\PRODUCT\\trunk'
}
...
stage('Copy my files') {
steps {
bat script: "ABC_123\\Rock^&Roll42.bat", args: "\"${env.ROOT_DIR }\""
}
}
1条答案
按热度按时间4ktjp1zp1#
根据文档,
args
参数不存在,因此您可能想尝试:作为另一种选择,当变量在
environment
块中定义时,它不仅可以在管道中使用env.ROOT_DIR
,而且还可以在您使用的shell中创建为环境变量。因此,它可以直接在cmd/powershell/sh shell中访问(取决于shell语法),使用变量作为普通shell变量,一些示例:cmd
可以通过在变量名的末尾和开头附加%
来使用环境变量,因此它将是%ROOT_DIR%
。sh
可以通过使用$
来使用环境变量,因此它将是$ROOT_DIR
。所以,我会试试这个:
在上面的例子中,变量替换并没有发生在Groovy上,而是直接由正在执行的shell完成。建议将机密传递给 shell 步骤。