我需要做相当于
set ENVAR=`some-command`
在 windows/cmd.exe 脚本中。Cygwin 不是一个选择。
对于加分:通常是否有一些相当于反引号的 cmd.exe?
一种快速而肮脏的方法是将其重定向到一个文件,然后读取它,例如
some-command>out.txt
set /p ENVAR=<out.txt
我想for
也可以帮助你,但我不记得确切的语法。尝试类似的东西
for /f "usebackq" %x in (`some-command`) do set ENVAR=%x
我可能忘记了一些token
或delim
选项...
不是“可能”,绝对必须指定“delims=”(这意味着“无分隔符”),除非您希望您的变量最多只包含输入数据的第一个空格或制表符。
建议将“delims=”指定为最后一个选项,以避免操作员和 shell 对选项感知的潜在混淆。
IE
FOR /F "usebackq delims=" %%a IN (`cygpath.exe -u "%~1"`) DO (
SET CMDNAME=%%~a
SHIFT
)