如何在jenkins构建步骤中在windows10批处理命令中转义%?

时间:2017-08-10 01:16:36

标签: windows jenkins

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

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

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

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

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

如何在jenkins构建步骤中逃避%字符?我不确定它是否仅与詹金斯有关。

1 个答案:

答案 0 :(得分:0)

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

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

C:\Program Files (x86)\Jenkins\workspace\Test>echo C:\Program Files (x86)\Jenkins\workspace\Test\.\Firefox Installer.exe 
C:\Program Files (x86)\Jenkins\workspace\Test\.\Firefox Installer.exe

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

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