如何在詹金斯构建步骤中的 windows10 批处理命令中转义 %?



我在 jenkins windows 批处理命令构建步骤中定义了以下命令:

for /r %%f in (.*.exe) do echo %%f

echo不会打印文件名。相反,它只是将%f打印到控制台。

我已经尝试过使用如下所示的单%,但没有帮助。它将f打印到控制台。

for /r %f in (.*.exe) do echo %f

如何在 Jenkins 构建步骤中转义%字符?我不确定它是否只与詹金斯有关。

在 Windows10 上的 Jenkins 2.60.2 上,我的目录中有两个 Firefox 安装程序可执行文件,在 Windows Batch 命令中运行for /r %%f in (.*.exe) do echo %%f,我得到以下输出:

Building in workspace C:Program Files (x86)JenkinsworkspaceTest
[Test] $ cmd /c call C:WINDOWSTEMPjenkins4832870824680456992.bat
C:Program Files (x86)JenkinsworkspaceTest>for /R %f in (.*.exe) do echo %f 
C:Program Files (x86)JenkinsworkspaceTest>echo C:Program Files (x86)JenkinsworkspaceTest.Firefox Installer.en-US.exe 
C:Program Files (x86)JenkinsworkspaceTest.Firefox Installer.en-US.exe
C:Program Files (x86)JenkinsworkspaceTest>echo C:Program Files (x86)JenkinsworkspaceTest.Firefox Installer.exe 
C:Program Files (x86)JenkinsworkspaceTest.Firefox Installer.exe

如您所见,它在运行批处理命令时正确地将双%%视为单个%,这是有道理的,因为它只是在它创建的临时批处理文件上调用cmd /c call,这是在批处理文件中执行%语法的正确方法。

我认为这种行为不太可能从不同版本的 Jenkins 中发生太大变化,但是您运行的是什么版本? 您可以发布批处理命令的完整输出吗? 也许里面有什么东西可以给我们一个线索。

最新更新