8

我需要做相当于

set ENVAR=`some-command`

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

对于加分:通常是否有一些相当于反引号的 cmd.exe?

4

2 回答 2

8

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

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

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

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

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

于 2010-07-07T23:59:16.817 回答
3

不是“可能”,绝对必须指定“delims=”(这意味着“无分隔符”),除非您希望您的变量最多只包含输入数据的第一个空格或制表符。

建议将“delims=”指定为最后一个选项,以避免操作员和 shell 对选项感知的潜在混淆。

IE

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

请参阅关于 FOR /F 的 SS64 文章

于 2015-02-01T00:39:16.023 回答