我在jenkins windows batch命令构建步骤中定义了以下命令:
for /r %%f in (.\*.exe) do echo %%f
但是echo
不会打印文件名。相反,它只是将%f
打印到控制台。
我尝试使用单%
如下,但它没有帮助。它将f
打印到控制台。
for /r %f in (.\*.exe) do echo %f
如何在jenkins构建步骤中逃避%
字符?我不确定它是否仅与詹金斯有关。
答案 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中发生很大变化,但是你运行的版本是什么?你可以发布批处理命令的完整输出吗?也许那里有一些可以给我们提供线索的东西。