如前所述Is it possible to set an environment variable to the output of a command in cmd.exe我总是使用
mycommand.exe>%TEMP%\out.txt
set /P FOO=<%TEMP%\out.txt
但这很难看,因为它会创建一个文件。
for
方法更好但更复杂
我想要一些简单的la unix,比如:
mycommand.exe|set /P FOO=
没有错误,但我运行后没有设置FOO
。
为什么这不起作用?
答案 0 :(得分:2)
我能想到这样做的最好方法是创建自己的小批量文件,静默使用FOR构造。例如,您可以创建一个名为BatchSet.bat的批处理,存储在路径的某个位置。该批处理将包含以下代码:
@Echo off
for /f "delims=" %%i in ('%2') do set %1=%%i
Set %1
如果使用以下命令运行此操作:
BatchSet MyVar whoami
你会得到类似的东西:
MyVar=servername\John
显然,您运行的命令应将其输出限制为单行,以便在环境变量中正确存储。 例如,如果你这样运行它:
BatchSet MyVar Vol
然后你只会得到 Vol 命令输出的第一行
MyVar= Volume on drive C is labeled MyDisk
但总而言之,这是一种相当优雅的方式来做你想要的。
请注意,批处理中的最后一行只是提供视觉输出。它可以完全删除。