我正在尝试使用命令行下面的单行使用完整路径生成目录列表。
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
我哪里错了?
Jenkins将此命令行写入临时创建的批处理文件,并使用cmd.exe /C
执行此批处理文件。
打开命令提示符窗口并运行for /?
。帮助输出中的第四段以:
要在批处理程序中使用FOR命令,请指定%% variable而不是%variable。
所以你必须写在詹金斯:
@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
中隐藏的子目录。