Is it possible to set an environment variable to the output of a command in cmd.exe
I need to do the equivalent of
set ENVAR=`some-command`
In a windows/cmd.exe script. Cygwin is not an option.
开发者_JAVA百科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=" (it means "no delimiters"), unless you want your variable to only contain up to first space or tab of the input data.
It is recommended to specify "delims=" as the last option to avoid potential confusion in options perception by the operator and by the shell.
I.e.
FOR /F "usebackq delims=" %%a IN (`cygpath.exe -u "%~1"`) DO (
SET CMDNAME=%%~a
SHIFT
)
See SS64 article on FOR /F.
精彩评论