2010-07-07 134 views
8

环境变量设置为一个命令的输出,我需要做的是否有可能在CMD.EXE

set ENVAR=`some-command` 

相当于在Windows/cmd.exe的脚本。 Cygwin不是一个选项。

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

+2

安装Powershell。 – 2010-07-07 23:39:40

+0

我有一个第三方程序调用cmd.exe与脚本并在脚本完成后检查原因环境变量。我无法直接使用其他shell。 – 2010-07-08 00:38:52

回答

7

一种快速和肮脏的方式将重定向到一个文件,然后阅读,例如,

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

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

for /f "usebackq" %x in (`some-command`) do set ENVAR=%x 

我可能忘了在选项一些tokendelim ...

1

不是“可能”,这绝对是一个必须注明“delims =”作为最后一个记号(手段,没有分隔符),除非您希望变量只包含输入数据的第一个空格。

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