I need to do the equivalent of
set ENVAR=`some-command`
In a windows/cmd.exe script. Cygwin is not an option.
For bonus marks: Is there some cmd.exe equivalent of backticks in general?
A quick and dirty way would be redirecting it to a file and then reading this, e.g.
some-command>out.txt
set /p ENVAR=<out.txt
I think for
can also help you, but I don't remember the exact syntax. Try something like
for /f "usebackq" %x in (`some-command`) do set ENVAR=%x
I probably forgot some token
or delim
in the options...
Not "probably", it is absolutely a must to specify "delims=" as last token (means, no delimiters), unless you want your variable only contain up to first space of the input data.
I.e.
FOR /F "usebackq delims=" %%a IN (`cygpath.exe -u "%~1"`) DO (
SET CMDNAME=%%~a
SHIFT
)
来源:https://stackoverflow.com/questions/3199696/is-it-possible-to-set-an-environment-variable-to-the-output-of-a-command-in-cmd