Jenkins groovy 尝试使用 find 命令将文本文件中的变量值设置为其他变量时出现批处理错误
Jenkins groovy batch error when trying to use find command to set value of a variable in a text file to some other variable
我在 jenkins 工作区目录中有一个名为 test.txt 的文件,用于管道作业 运行 在 windows 从属代理上。文件内容如下:-
test1=abc
test2=xyz
现在我正在 运行 管道 groovy 工作是 :-
node () {
bat '''FOR /F "tokens=2 delims==" %%a IN ('find "test2" ^<%WORKSPACE%\test.txt') DO SET test2value=%%a
echo %test2value%'''
}
如果我在同一台 windows 从机上使用 windows 命令行执行相同的脚本,它工作得很好,但在 jenkins groovy 中它说找不到文件 test2。我无法弄清楚如何在这种情况下使用它。这条管道的实际预期结果应该是xyz
请帮助
这对我有用。你确定文本文件在那里吗?
node("windows"){
stage("dummy"){
bat """
@where find
@echo test1=abc>test.txt
@echo test2=xyz>>test.txt
@type test.txt
@FOR /F "tokens=2 delims==" %%a IN ('find "test2" ^<%WORKSPACE%\test.txt') DO @SET test2value=%%a
@echo %test2value%
"""
}
}
输出:
[Pipeline] {
[Pipeline] stage
[Pipeline] { (dummy)
[Pipeline] bat
C:\Windows\System32\find.exe
test1=abc
test2=xyz
xyz
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
确保您实际使用的是 Windows find.exe 而不是 bash 中可能来自您的 git 安装的查找。
我在 jenkins 工作区目录中有一个名为 test.txt 的文件,用于管道作业 运行 在 windows 从属代理上。文件内容如下:-
test1=abc
test2=xyz
现在我正在 运行 管道 groovy 工作是 :-
node () {
bat '''FOR /F "tokens=2 delims==" %%a IN ('find "test2" ^<%WORKSPACE%\test.txt') DO SET test2value=%%a
echo %test2value%'''
}
如果我在同一台 windows 从机上使用 windows 命令行执行相同的脚本,它工作得很好,但在 jenkins groovy 中它说找不到文件 test2。我无法弄清楚如何在这种情况下使用它。这条管道的实际预期结果应该是xyz 请帮助
这对我有用。你确定文本文件在那里吗?
node("windows"){
stage("dummy"){
bat """
@where find
@echo test1=abc>test.txt
@echo test2=xyz>>test.txt
@type test.txt
@FOR /F "tokens=2 delims==" %%a IN ('find "test2" ^<%WORKSPACE%\test.txt') DO @SET test2value=%%a
@echo %test2value%
"""
}
}
输出:
[Pipeline] {
[Pipeline] stage
[Pipeline] { (dummy)
[Pipeline] bat
C:\Windows\System32\find.exe
test1=abc
test2=xyz
xyz
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
确保您实际使用的是 Windows find.exe 而不是 bash 中可能来自您的 git 安装的查找。