How are environment variables used in Jenkins with Windows Batch Command?

108,025

Solution 1

I know nothing about Jenkins, but it looks like you are trying to access environment variables using some form of unix syntax - that won't work.

If the name of the variable is WORKSPACE, then the value is expanded in Windows batch using
%WORKSPACE%. That form of expansion is performed at parse time. For example, this will print to screen the value of WORKSPACE

echo %WORKSPACE%

If you need the value at execution time, then you need to use delayed expansion !WORKSPACE!. Delayed expansion is not normally enabled by default. Use SETLOCAL EnableDelayedExpansion to enable it. Delayed expansion is often needed because blocks of code within parentheses and/or multiple commands concatenated by &, &&, or || are parsed all at once, so a value assigned within the block cannot be read later within the same block unless you use delayed expansion.

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

The output of the above is

Normal Expansion = BEFORE
Delayed Expansion = AFTER

Use HELP SET or SET /? from the command line to get more information about Windows environment variables and the various expansion options. For example, it explains how to do search/replace and substring operations.

Solution 2

In windows you should use %WORKSPACE%.

Solution 3

I should this On Windows, environment variable expansion is %BUILD_NUMBER%

Share:
108,025
DonBecker
Author by

DonBecker

LinkedIn

Updated on April 25, 2020

Comments

  • DonBecker
    DonBecker about 4 years

    I'm trying to use Jenkins (Global) environment variables in my xcopy script.

    ${WORKSPACE} doesn't work
    "${WORKSPACE}" doesn't work
    '${WORKSPACE}' doesn't work
    
  • Volodymyr Bezuglyy
    Volodymyr Bezuglyy over 12 years
    Yes. And in Hudson's "Build/Command/Execute Windows batch command" field.
  • JoxTraex
    JoxTraex over 11 years
    I totally forgot about that little nit picky detail about windows. Thanks !
  • Himanshu Chauhan
    Himanshu Chauhan about 7 years
    @UtsavGupta I was also stuck on this. I was using $BUILD_ID earlier. Now happy with %BUILD_ID% on windows.
  • shikha singh
    shikha singh almost 2 years
    %VARIABLE% syntax can also be used to refer User-defined Jenkins variables.