如此处所述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
没有设置。
为什么这不起作用?
最佳答案
我能想到的最好的方法是创建您自己的小批处理文件,静默使用 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
但总而言之,这是一种相当优雅的方式来完成您正在寻找的事情。
请注意,批处理中的最后一行只是提供视觉输出。它可以完全删除。
关于windows oneliner 在环境变量中设置命令输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38722224/