是否可以在cmd.exe中将环境变量设置为命令的输出

时间:2010-07-07 23:38:42

标签: shell cmd backticks

我需要做相同的

set ENVAR=`some-command`

在windows / cmd.exe脚本中。 Cygwin不是一个选择。

对于奖励标记:一般来说是否有一些cmd.exe相当于反引号?

2 个答案:

答案 0 :(得分:7)

快速而肮脏的方法是将其重定向到文件,然后阅读它,例如

some-command>out.txt
set /p ENVAR=<out.txt

我认为for也可以帮到你,但我不记得确切的语法。尝试像

这样的东西
for /f "usebackq" %x in (`some-command`) do set ENVAR=%x

我可能忘记了选项中的一些tokendelim ...

答案 1 :(得分:1)

不是&#34;可能&#34;,绝对必须指定&#34; delims =&#34;作为最后一个标记(表示没有分隔符),除非您希望变量只包含输入数据的第一个空格。

FOR /F "usebackq delims=" %%a IN (`cygpath.exe -u "%~1"`) DO (
  SET CMDNAME=%%~a
  SHIFT
)