windows oneliner在环境变量

时间:2016-08-02 13:44:49

标签: windows batch-file environment-variables

如前所述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

为什么这不起作用?

1 个答案:

答案 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

但总而言之,这是一种相当优雅的方式来做你想要的。

请注意,批处理中的最后一行只是提供视觉输出。它可以完全删除。