I have seen Setting and getting Windows environment variables from the command prompt?, but my question is slightly different.
Say I have a terminal program,
myprogram.exe, which reads environment variables; say:
... char *valueMYVAR = getenv("MYVAR"); printf("MYVAR is %s\r\n", (valueMYVAR==NULL)?"":valueMYVAR ); ...
Now, if I'm in Linux
bash, I can set the environment variable temporarily, just for that execution of the program, by simply writing it out on the command line, as in:
$ MYVAR=1 ./myprogram.exe
How could I do the same, if I am using the Windows Command Prompt (
cmd.exe)? I have tried:
> SET MYVAR=1 myprogram.exe
… but it doesn't work – in the sense that
myprogram.exe is not run at all, probably being interpreted as being part of the command line for the
Is this kind of a thing doable in Windows Command Prompt? If relevant, I use Windows 10.
EDIT: Found these:
In Windows the '( )' operator has a similar behavior as the Bash command substitution.
Like this on all Microsoft OSes since 2000, and still good today:
dir & echo foo
So, I've tried:
> (SET MYVAR=1 && myprogram.exe)
… and this actually works – except, it seems the parentheses in Windows are not a "subshell" (or "subprocess"), and therefore setting the value "leaks" onto the current shell, which I don't want (in other words, if I just run
myprogram.exe after the above command, it will still pick up
MYVAR=1, whereas on Linux,
MYVAR in that case would remain unset).
So, is there a way to do this on a single command line – and temporarily?