在Jenkins管道中执行文件名中有空格的批处理
Posted
技术标签:
【中文标题】在Jenkins管道中执行文件名中有空格的批处理【英文标题】:Execute Batch which have spaces in the file name in Jenkins pipeline 【发布时间】:2022-01-18 13:28:05 【问题描述】:我在 Jenkins 管道中有以下批处理脚本。
echo Release Candidate : %some_env_var%
D:
CD D:\\abc\\def
cmd /c "3. Release to Framework Branch.cmd" %some_env_var%
当管道被执行时,我收到了这个错误。
'3.' is not recognized as an internal or external command,
我想我有问题,因为文件名有空格。我在互联网上找到错误。很多人都回答了当文件路径中有空格时该怎么办。不是文件名。
我也尝试了单引号之间的文件名。仍然得到同样的错误。我该如何解决这个问题?
这就是我的管道代码的样子。
pipeline
agent any
stages
stage('9.3.ReleaseCodegenerator')
steps
bat """
echo Release Candidate : %some_env_var%
D:
CD D:\\abc\\def
cmd /c "3. Release to Framework Branch.cmd" %some_env_var%
"""
【问题讨论】:
试试cmd /D /S /C ""3. Release to Framework Branch.cmd" %some_env_var%"
或cmd /D /S /C ^""3. Release to Framework Branch.cmd" %some_env_var%^"
。 N. B.: CD D:\\abc\\def
应改为 cd "D:\abc\def"
;当您写cd /D "D:\abc\def"
时,您甚至不需要先通过D:
切换驱动器......
call "3. Release to Framework Branch.cmd" %some_env_var%
我看不出有任何理由在 cmd 中使用 cmd。
【参考方案1】:
您遇到了无法转义嵌套在其他"
中的"
的问题。您没有插入任何管道/Groovy 变量,因此bat
step 方法的多行字符串参数可以是文字字符串:
bat '''
echo Release Candidate : %some_env_var%
D:
CD D:\\abc\\def
cmd /c "3. Release to Framework Branch.cmd" %some_env_var%
'''
这将解决问题中的错误。
【讨论】:
以上是关于在Jenkins管道中执行文件名中有空格的批处理的主要内容,如果未能解决你的问题,请参考以下文章
使用 jenkins 管道在 Windows 服务器上部署 jar