【问题标题】:windows oneliner to set a command output in an environment variablewindows oneliner 在环境变量中设置命令输出
【发布时间】:2016-08-02 13:44:49
【问题描述】:

正如这里所说的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

为什么这不起作用?

【问题讨论】:

标签: windows batch-file environment-variables


【解决方案1】:

我能想到的最佳方法是创建您自己的小批处理文件,该文件静默使用 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

但总而言之,这是一种相当优雅的方式来满足您的需求。

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

【讨论】:

  • 您可以在批处理文件的参数中使用等号作为分隔符。另外,当这个批处理文件用于另一个批处理文件时,不要忘记包含call 命令:call BatchSet MyVar=whoami
猜你喜欢
  • 1970-01-01
  • 2016-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多