windows oneliner 在环境变量中设置命令输出

标签 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 没有设置。

为什么这不起作用?

最佳答案

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

相关文章:

python - 种子 python 在 Mac 和 Windows 上随机生成不同的数字

powershell - 仅当以管理员身份运行时无法从 .bat 文件找到 powershell 文件的文件路径

database - 是什么减慢了数据库性能的增长?

c++ - 多线程和多进程的性能差异

windows - Perl正则表达式问题

batch-file - 批量将每行拆分为多行

node.js - Node.js 脚本运行后是否可以获得更新的环境变量?

c++ - Linux - 找不到 SO 文件

c++ - 我如何在服务上下文中获取用户名

c# - 针对 Active Directory 验证 NT 和 LM 哈希