Batch file 在jenkins管道中将局部变量传递给带有returnStdout的批处理
当我尝试在如下所示的batch命令中替换date\u append变量时,它并没有准确地检索日期,而是显示为Snapshot-${date\u append}.onp 确切的问题在哪里Batch file 在jenkins管道中将局部变量传递给带有returnStdout的批处理,batch-file,jenkins-pipeline,Batch File,Jenkins Pipeline,当我尝试在如下所示的batch命令中替换date\u append变量时,它并没有准确地检索日期,而是显示为Snapshot-${date\u append}.onp 确切的问题在哪里 stage('test') { steps { script { date_append= "${new Date().format('yyyyMMdd_hhmmss')}"
stage('test') {
steps {
script
{
date_append= "${new Date().format('yyyyMMdd_hhmmss')}"
echo "${date_append}"
issue=bat(label: '', returnStdout: true, script: '''echo off
"C:\\Desktop\\eme.exe" /v
/source:SYS/dbname@localhost:port/env{test} AS SYSDBA
/target:C:\\desktop\\file-${date_append}.xml{test}
/scriptfile:C:\\script\\oldscript.sql
@IF %ERRORLEVEL% NEQ 61 (
@echo "issue is FALSE"
)''')
}
}
}
要在goovy中使用变量内部shell脚本,您需要使用gstring,即
“
而不是”
因此,您的代码只需要将'
的用法替换为“
”,或者将当前使用的“
替换为”
,(以下我已将您的双引号替换为双引号):
有关GString的更多信息,请参阅:这对我很有用
issue=bat(label: '', returnStdout: true, script: """echo off
"C:\\Desktop\\eme.exe" /v
/source:SYS/dbname@localhost:port/env{test} AS SYSDBA
/target:C:\\desktop\\file-${date_append}.xml{test}
/scriptfile:C:\\script\\oldscript.sql
IF %ERRORLEVEL% NEQ 61 (
echo \"issue is FALSE\"
)""")
这看起来不像…它是一个管道代码。在脚本中,iam正在执行bat,issue=bat(标签:“”,returnStdout:true,脚本:“”“echo off”C:\\Desktop\\eme.exe”/v/source:SYS/dbname@localhost:port/env{test}AS SYSDBA/target:C:\\desktop\\file-${date\u append}.xml{test}/scriptfile:C:\\script\\oldscript.sql如果%ERRORLEVEL%NEQ 61(echo“issue is FALSE”)“”)谢谢@metalisticpain。它根据需要使用变量,但文件名/目录在某些地方不可读,因为我在执行此命令时遇到了下面的问题,默认情况下,它移动到if循环,文件名、目录名或卷标语法不正确。我不知道抱歉。除非你需要做更多的事情,否则可能会提出一个新问题\escape?在'C:\\\`上,它的工作原理如下,谢谢!!issue=bat(标签:'',returnStdout:true,脚本:''echo off“C:\\Desktop\\eme.exe”/v/来源:SYS/dbname@localhost:port/env{test}AS SYSDBA/target:C:\\desktop\\file-${date\u append}.xml{test}/scriptfile:C:\\script\\oldscript.sql如果%ERRORLEVEL%NEQ 61(echo \“issue is FALSE\”)
issue=bat(label: '', returnStdout: true, script: """echo off
"C:\\Desktop\\eme.exe" /v
/source:SYS/dbname@localhost:port/env{test} AS SYSDBA
/target:C:\\desktop\\file-${date_append}.xml{test}
/scriptfile:C:\\script\\oldscript.sql
IF %ERRORLEVEL% NEQ 61 (
echo \"issue is FALSE\"
)""")