How are environment variables used in Jenkins with Windows Batch Command?
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%
Comments
-
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 over 12 yearsYes. And in Hudson's "Build/Command/Execute Windows batch command" field.
-
JoxTraex over 11 yearsI totally forgot about that little nit picky detail about windows. Thanks !
-
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 almost 2 years%VARIABLE% syntax can also be used to refer User-defined Jenkins variables.