【问题标题】:How are environment variables used in Jenkins with Windows Batch Command?Jenkins 中的环境变量如何与 Windows 批处理命令一起使用?
【发布时间】:2012-01-26 06:13:14
【问题描述】:

我正在尝试在我的 xcopy 脚本中使用 Jenkins(全局)环境变量

${WORKSPACE} doesn't work
"${WORKSPACE}" doesn't work
'${WORKSPACE}' doesn't work

【问题讨论】:

    标签: windows batch-file hudson jenkins


    【解决方案1】:

    在 windows 中你应该使用%WORKSPACE%

    【讨论】:

    • 是的。并在 Hudson 的“构建/命令/执行 Windows 批处理命令”字段中。
    【解决方案2】:

    我对 Jenkins 一无所知,但您似乎正在尝试使用某种形式的 unix 语法访问环境变量 - 这不起作用。

    如果变量的名称是 WORKSPACE,则在 Windows 批处理中使用
    %WORKSPACE% 扩展该值。这种形式的扩展是在解析时执行的。例如,这将打印以筛选 WORKSPACE 的值

    echo %WORKSPACE%
    

    如果您在执行时需要该值,则需要使用延迟扩展!WORKSPACE!。默认情况下通常不启用延迟扩展。使用SETLOCAL EnableDelayedExpansion 启用它。通常需要延迟扩展,因为括号内的代码块和/或由&&&|| 连接的多个命令会一次全部解析,因此块内分配的值不能稍后在同一块内读取除非你使用延迟扩展,否则阻塞。

    setlocal enableDelayedExpansion
    set WORKSPACE=BEFORE
    (
      set WORKSPACE=AFTER
      echo Normal Expansion = %WORKSPACE%
      echo Delayed Expansion = !WORKSPACE!
    )
    

    上面的输出是

    Normal Expansion = BEFORE
    Delayed Expansion = AFTER
    

    从命令行使用HELP SETSET /? 获取有关Windows 环境变量和各种扩展选项的更多信息。例如,它解释了如何进行搜索/替换和子字符串操作。

    【讨论】:

    • 我完全忘记了关于 Windows 的那一点点挑剔的细节。谢谢!
    • @UtsavGupta 我也被困在这个问题上。我之前使用的是 $BUILD_ID。现在对 Windows 上的 %BUILD_ID% 感到满意。
    【解决方案3】:

    我应该这样在 Windows 上,环境变量扩展为 %BUILD_NUMBER%

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-21
      • 1970-01-01
      • 2014-03-05
      • 2022-10-14
      • 2011-07-20
      • 1970-01-01
      相关资源
      最近更新 更多