使用批处理文件将一个for循环结果输出到Jenkins的文件

时间:2018-01-03 13:22:50

标签: windows batch-file jenkins

我尝试使用命令行下面的单行程序生成完整路径的目录列表。

for /f "delims=" %i in ('dir /b /ad "D:\myWork\organization"') do @echo D:\myWork\organization\%i

通过在其下面列出子文件夹,可以正常工作;

folder_1
folder_2
folder_3
.....
.....

但如果我从Jenkins的Windows执行批处理命令选项中执行相同的操作,我将面临以下错误消息。

do @echo D:\myWork\organization\%i > output.txt was unexpected at this time.

Jenkins使用的命令。

for /f "delims=" %i in ('dir /b /ad "D:\myWork\organization"') do @echo D:\myWork\organization\%%i > output.txt

我哪里错了?

1 个答案:

答案 0 :(得分:2)

Jenkins将此命令行写入临时创建的批处理文件,并使用cmd.exe /C执行此批处理文件。

打开命令提示符窗口并运行for /?。帮助输出中的第四段以:

开头
  

要在批处理程序中使用FOR命令,请指定%% variable而不是%variable。

所以你必须用Jenkins写作:

@for /f "delims=" %%i in ('dir /b /ad "D:\myWork\organization" 2^>nul') do @echo D:\myWork\organization\%%i

换句话说,您必须使用%%i而不是%i,因为Jenkins通过将此行(和其他行)写入批处理文件并使用Windows命令解释程序执行它来执行此命令行。

顺便说一下:你也可以使用这个命令行:

@for /D %%I in ("D:\myWork\organization\*") do @echo %%I

这会更快一些,但会忽略D:\myWork\organization中隐藏的子目录。