Set and print content of environment variable in cmd.exe subshell?How can I display the contents of an environment variable from the command prompt in Windows 7?Setting and getting Windows environment variables from the command prompt?cmd.exe SET command does not save values for new cmd.exe sessionsSet enviroment variable setxUsing an environment variable set to a path value: the system cannot find the path specified for %OPENCV_DIR%How can I set temporary environment for explorer (renewed)how to set up an environment variable that it stores a path along with another env variable but doesnt expandsNested environment variable does not expandedAre there rules to Windows 7 Environment variable names?How can I set a dynamically evaluated environment variable for Windows' Command Processor (cmd.exe)?How to set Base64 encryption key as Environment (system) Variable on Windows 10
Should QA ask requirements to developers?
Should I take out a loan for a friend to invest on my behalf?
Do f-stop and exposure time perfectly cancel?
Am I not good enough for you?
How to create a hard link to an inode (ext4)?
Is there any way to click on 6th item of this list
Are babies of evil humanoid species inherently evil?
Are there historical instances of the capital of a colonising country being temporarily or permanently shifted to one of its colonies?
They call me Inspector Morse
Try Catch Block Affecting a Variable in an Enclosing Scope
Why is this plane circling around the LKO airport every day?
How do I express some one as a black person?
How to share a mine of irresistable resources in the middle of an ocean without conflict?
What are actual Tesla M60 models used by AWS?
Force user to remove USB token
htop displays identical program in multiple lines
What Happens when Passenger Refuses to Fly Boeing 737 Max?
What to do when during a meeting client people start to fight (even physically) with each others?
Accountant/ lawyer will not return my call
Is this combination of Quivering Palm and Haste RAW?
My story is written in English, but is set in my home country. What language should I use for the dialogue?
Good allowance savings plan?
What are some noteworthy "mic-drop" moments in math?
UART pins to unpowered MCU?
Set and print content of environment variable in cmd.exe subshell?
How can I display the contents of an environment variable from the command prompt in Windows 7?Setting and getting Windows environment variables from the command prompt?cmd.exe SET command does not save values for new cmd.exe sessionsSet enviroment variable setxUsing an environment variable set to a path value: the system cannot find the path specified for %OPENCV_DIR%How can I set temporary environment for explorer (renewed)how to set up an environment variable that it stores a path along with another env variable but doesnt expandsNested environment variable does not expandedAre there rules to Windows 7 Environment variable names?How can I set a dynamically evaluated environment variable for Windows' Command Processor (cmd.exe)?How to set Base64 encryption key as Environment (system) Variable on Windows 10
Consider this example, where I start a new "sub" instance of cmd.exe
, and then try to set a new environment variable in it, and then check if it has the proper value set (this is in cmd.exe
of Windows 10):
>cmd /c "SET OPERATION=NEW & SET O"
OneDrive=C:UsersuserOneDrive
OPERATION=NEW
OS=Windows_NT
So, as noted in https://superuser.com/a/776506/688965 - by doing SET O
I would "display all variables that begin with the letter 'O'", and indeed, it shows that an environment variable OPERATION
exists, and its value is NEW
. So far, so good.
However, if I try to print the environment value instead, it does not expand:
>cmd /c "SET OPERATION=NEW & echo %OPERATION%"
%OPERATION%
... however, if I try to expand any other environment variable, it works ?!:
>cmd /c "SET OPERATION=NEW & echo %OS%"
Windows_NT
Why does this happen? How can I set an environment variable, and then print it with echo
in a single line, in a cmd.exe
subshell?
windows command-line cmd.exe environment-variables
add a comment |
Consider this example, where I start a new "sub" instance of cmd.exe
, and then try to set a new environment variable in it, and then check if it has the proper value set (this is in cmd.exe
of Windows 10):
>cmd /c "SET OPERATION=NEW & SET O"
OneDrive=C:UsersuserOneDrive
OPERATION=NEW
OS=Windows_NT
So, as noted in https://superuser.com/a/776506/688965 - by doing SET O
I would "display all variables that begin with the letter 'O'", and indeed, it shows that an environment variable OPERATION
exists, and its value is NEW
. So far, so good.
However, if I try to print the environment value instead, it does not expand:
>cmd /c "SET OPERATION=NEW & echo %OPERATION%"
%OPERATION%
... however, if I try to expand any other environment variable, it works ?!:
>cmd /c "SET OPERATION=NEW & echo %OS%"
Windows_NT
Why does this happen? How can I set an environment variable, and then print it with echo
in a single line, in a cmd.exe
subshell?
windows command-line cmd.exe environment-variables
2
"Why does this happen?" The %OPERATION% is executed before it has been set. See How does the Windows Command Interpreter (CMD.EXE) parse scripts? for the gory details.
– DavidPostill♦
2 hours ago
Thanks @DavidPostill - feel free to post this as an answer, I'll accept it!
– sdbbs
2 hours ago
add a comment |
Consider this example, where I start a new "sub" instance of cmd.exe
, and then try to set a new environment variable in it, and then check if it has the proper value set (this is in cmd.exe
of Windows 10):
>cmd /c "SET OPERATION=NEW & SET O"
OneDrive=C:UsersuserOneDrive
OPERATION=NEW
OS=Windows_NT
So, as noted in https://superuser.com/a/776506/688965 - by doing SET O
I would "display all variables that begin with the letter 'O'", and indeed, it shows that an environment variable OPERATION
exists, and its value is NEW
. So far, so good.
However, if I try to print the environment value instead, it does not expand:
>cmd /c "SET OPERATION=NEW & echo %OPERATION%"
%OPERATION%
... however, if I try to expand any other environment variable, it works ?!:
>cmd /c "SET OPERATION=NEW & echo %OS%"
Windows_NT
Why does this happen? How can I set an environment variable, and then print it with echo
in a single line, in a cmd.exe
subshell?
windows command-line cmd.exe environment-variables
Consider this example, where I start a new "sub" instance of cmd.exe
, and then try to set a new environment variable in it, and then check if it has the proper value set (this is in cmd.exe
of Windows 10):
>cmd /c "SET OPERATION=NEW & SET O"
OneDrive=C:UsersuserOneDrive
OPERATION=NEW
OS=Windows_NT
So, as noted in https://superuser.com/a/776506/688965 - by doing SET O
I would "display all variables that begin with the letter 'O'", and indeed, it shows that an environment variable OPERATION
exists, and its value is NEW
. So far, so good.
However, if I try to print the environment value instead, it does not expand:
>cmd /c "SET OPERATION=NEW & echo %OPERATION%"
%OPERATION%
... however, if I try to expand any other environment variable, it works ?!:
>cmd /c "SET OPERATION=NEW & echo %OS%"
Windows_NT
Why does this happen? How can I set an environment variable, and then print it with echo
in a single line, in a cmd.exe
subshell?
windows command-line cmd.exe environment-variables
windows command-line cmd.exe environment-variables
asked 3 hours ago
sdbbssdbbs
1577
1577
2
"Why does this happen?" The %OPERATION% is executed before it has been set. See How does the Windows Command Interpreter (CMD.EXE) parse scripts? for the gory details.
– DavidPostill♦
2 hours ago
Thanks @DavidPostill - feel free to post this as an answer, I'll accept it!
– sdbbs
2 hours ago
add a comment |
2
"Why does this happen?" The %OPERATION% is executed before it has been set. See How does the Windows Command Interpreter (CMD.EXE) parse scripts? for the gory details.
– DavidPostill♦
2 hours ago
Thanks @DavidPostill - feel free to post this as an answer, I'll accept it!
– sdbbs
2 hours ago
2
2
"Why does this happen?" The %OPERATION% is executed before it has been set. See How does the Windows Command Interpreter (CMD.EXE) parse scripts? for the gory details.
– DavidPostill♦
2 hours ago
"Why does this happen?" The %OPERATION% is executed before it has been set. See How does the Windows Command Interpreter (CMD.EXE) parse scripts? for the gory details.
– DavidPostill♦
2 hours ago
Thanks @DavidPostill - feel free to post this as an answer, I'll accept it!
– sdbbs
2 hours ago
Thanks @DavidPostill - feel free to post this as an answer, I'll accept it!
– sdbbs
2 hours ago
add a comment |
2 Answers
2
active
oldest
votes
Why does this happen?
The %OPERATION%
is expanded (Phase 1) before the variable has been set (Phase 7).
See How does the Windows Command Interpreter (CMD.EXE) parse scripts? for the gory details:
Processing a line of code in a batch file involves multiple phases.
Here is a brief overview of the various phases:
Phase 0) Read Line:
Phase 1) Percent Expansion:
Phase 1.5) Remove : Remove all Carriage Return (0x0D) characters
Phase 2) Process special characters, tokenize, and build a cached
command block: This is a complex process that is affected by things
such as quotes, special characters, token delimiters, and caret
escapes.
Phase 3) Echo the parsed command(s) Only if the command block did not
begin with @, and ECHO was ON at the start of the preceding step.
Phase 4) FOR %X variable expansion: Only if a FOR command is active
and the commands after DO are being processed.
Phase 5) Delayed Expansion: Only if delayed expansion is enabled
Phase 5.3) Pipe processing: Only if commands are on either side of a
pipe
Phase 5.5) Execute Redirection:
Phase 6) CALL processing/Caret doubling: Only if the command token is
CALL
Phase 7) Execute: The command is executed
add a comment |
To enable neccessary delayed expansion in a cmd subshell you'll have to use the /V:ON
switch of cmd.exe and use an !
exclamation mark instead on the %
percent sign.
> cmd /V:ON /C "SET OPERATION=NEW&echo [!OPERATION!]"
[NEW]
Just a reminder
The trailing space in your original set will be part of the variable content:
> cmd /V:ON /C "SET OPERATION=NEW &echo [!OPERATION!]"
[NEW ]
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "3"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1413376%2fset-and-print-content-of-environment-variable-in-cmd-exe-subshell%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Why does this happen?
The %OPERATION%
is expanded (Phase 1) before the variable has been set (Phase 7).
See How does the Windows Command Interpreter (CMD.EXE) parse scripts? for the gory details:
Processing a line of code in a batch file involves multiple phases.
Here is a brief overview of the various phases:
Phase 0) Read Line:
Phase 1) Percent Expansion:
Phase 1.5) Remove : Remove all Carriage Return (0x0D) characters
Phase 2) Process special characters, tokenize, and build a cached
command block: This is a complex process that is affected by things
such as quotes, special characters, token delimiters, and caret
escapes.
Phase 3) Echo the parsed command(s) Only if the command block did not
begin with @, and ECHO was ON at the start of the preceding step.
Phase 4) FOR %X variable expansion: Only if a FOR command is active
and the commands after DO are being processed.
Phase 5) Delayed Expansion: Only if delayed expansion is enabled
Phase 5.3) Pipe processing: Only if commands are on either side of a
pipe
Phase 5.5) Execute Redirection:
Phase 6) CALL processing/Caret doubling: Only if the command token is
CALL
Phase 7) Execute: The command is executed
add a comment |
Why does this happen?
The %OPERATION%
is expanded (Phase 1) before the variable has been set (Phase 7).
See How does the Windows Command Interpreter (CMD.EXE) parse scripts? for the gory details:
Processing a line of code in a batch file involves multiple phases.
Here is a brief overview of the various phases:
Phase 0) Read Line:
Phase 1) Percent Expansion:
Phase 1.5) Remove : Remove all Carriage Return (0x0D) characters
Phase 2) Process special characters, tokenize, and build a cached
command block: This is a complex process that is affected by things
such as quotes, special characters, token delimiters, and caret
escapes.
Phase 3) Echo the parsed command(s) Only if the command block did not
begin with @, and ECHO was ON at the start of the preceding step.
Phase 4) FOR %X variable expansion: Only if a FOR command is active
and the commands after DO are being processed.
Phase 5) Delayed Expansion: Only if delayed expansion is enabled
Phase 5.3) Pipe processing: Only if commands are on either side of a
pipe
Phase 5.5) Execute Redirection:
Phase 6) CALL processing/Caret doubling: Only if the command token is
CALL
Phase 7) Execute: The command is executed
add a comment |
Why does this happen?
The %OPERATION%
is expanded (Phase 1) before the variable has been set (Phase 7).
See How does the Windows Command Interpreter (CMD.EXE) parse scripts? for the gory details:
Processing a line of code in a batch file involves multiple phases.
Here is a brief overview of the various phases:
Phase 0) Read Line:
Phase 1) Percent Expansion:
Phase 1.5) Remove : Remove all Carriage Return (0x0D) characters
Phase 2) Process special characters, tokenize, and build a cached
command block: This is a complex process that is affected by things
such as quotes, special characters, token delimiters, and caret
escapes.
Phase 3) Echo the parsed command(s) Only if the command block did not
begin with @, and ECHO was ON at the start of the preceding step.
Phase 4) FOR %X variable expansion: Only if a FOR command is active
and the commands after DO are being processed.
Phase 5) Delayed Expansion: Only if delayed expansion is enabled
Phase 5.3) Pipe processing: Only if commands are on either side of a
pipe
Phase 5.5) Execute Redirection:
Phase 6) CALL processing/Caret doubling: Only if the command token is
CALL
Phase 7) Execute: The command is executed
Why does this happen?
The %OPERATION%
is expanded (Phase 1) before the variable has been set (Phase 7).
See How does the Windows Command Interpreter (CMD.EXE) parse scripts? for the gory details:
Processing a line of code in a batch file involves multiple phases.
Here is a brief overview of the various phases:
Phase 0) Read Line:
Phase 1) Percent Expansion:
Phase 1.5) Remove : Remove all Carriage Return (0x0D) characters
Phase 2) Process special characters, tokenize, and build a cached
command block: This is a complex process that is affected by things
such as quotes, special characters, token delimiters, and caret
escapes.
Phase 3) Echo the parsed command(s) Only if the command block did not
begin with @, and ECHO was ON at the start of the preceding step.
Phase 4) FOR %X variable expansion: Only if a FOR command is active
and the commands after DO are being processed.
Phase 5) Delayed Expansion: Only if delayed expansion is enabled
Phase 5.3) Pipe processing: Only if commands are on either side of a
pipe
Phase 5.5) Execute Redirection:
Phase 6) CALL processing/Caret doubling: Only if the command token is
CALL
Phase 7) Execute: The command is executed
answered 2 hours ago
DavidPostill♦DavidPostill
106k26228263
106k26228263
add a comment |
add a comment |
To enable neccessary delayed expansion in a cmd subshell you'll have to use the /V:ON
switch of cmd.exe and use an !
exclamation mark instead on the %
percent sign.
> cmd /V:ON /C "SET OPERATION=NEW&echo [!OPERATION!]"
[NEW]
Just a reminder
The trailing space in your original set will be part of the variable content:
> cmd /V:ON /C "SET OPERATION=NEW &echo [!OPERATION!]"
[NEW ]
add a comment |
To enable neccessary delayed expansion in a cmd subshell you'll have to use the /V:ON
switch of cmd.exe and use an !
exclamation mark instead on the %
percent sign.
> cmd /V:ON /C "SET OPERATION=NEW&echo [!OPERATION!]"
[NEW]
Just a reminder
The trailing space in your original set will be part of the variable content:
> cmd /V:ON /C "SET OPERATION=NEW &echo [!OPERATION!]"
[NEW ]
add a comment |
To enable neccessary delayed expansion in a cmd subshell you'll have to use the /V:ON
switch of cmd.exe and use an !
exclamation mark instead on the %
percent sign.
> cmd /V:ON /C "SET OPERATION=NEW&echo [!OPERATION!]"
[NEW]
Just a reminder
The trailing space in your original set will be part of the variable content:
> cmd /V:ON /C "SET OPERATION=NEW &echo [!OPERATION!]"
[NEW ]
To enable neccessary delayed expansion in a cmd subshell you'll have to use the /V:ON
switch of cmd.exe and use an !
exclamation mark instead on the %
percent sign.
> cmd /V:ON /C "SET OPERATION=NEW&echo [!OPERATION!]"
[NEW]
Just a reminder
The trailing space in your original set will be part of the variable content:
> cmd /V:ON /C "SET OPERATION=NEW &echo [!OPERATION!]"
[NEW ]
edited 2 hours ago
answered 2 hours ago
LotPingsLotPings
5,0601823
5,0601823
add a comment |
add a comment |
Thanks for contributing an answer to Super User!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1413376%2fset-and-print-content-of-environment-variable-in-cmd-exe-subshell%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
-cmd.exe, command-line, environment-variables, windows
2
"Why does this happen?" The %OPERATION% is executed before it has been set. See How does the Windows Command Interpreter (CMD.EXE) parse scripts? for the gory details.
– DavidPostill♦
2 hours ago
Thanks @DavidPostill - feel free to post this as an answer, I'll accept it!
– sdbbs
2 hours ago