windows - 使用批处理文件将 for 循环结果从 Jenkins 输出到文件

标签 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

我哪里出错了?

最佳答案

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

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

To use the FOR command in a batch program, specify %%variable instead of %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 中的隐藏子目录。

关于windows - 使用批处理文件将 for 循环结果从 Jenkins 输出到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48078299/

相关文章:

sql-server - 如何在 Windows 中使用 Perl 的 DBI 模块连接到 MSSQL 数据库?

windows - 从文本文件中提取找到的行+后续行

mysql - 将 .sql 文件批处理文件导入到 mariadb 失败

jenkins - 可视化 Jenkins 管道或多分支管道作业

c# - 你如何在c#中将图像旋转到鼠标的位置?

c++ - 为什么我必须链接到 opengl32.lib

java - Tomcat 启动挂起

git - 每次都克隆 jenkins git 插件

jenkins - 在 Jenkins 中哪里设置系统属性?

android - 如何使用 NFC 将字符串从 Windows Phone 8 发送到 Android 设备