在Windows shell脚本中如何将程序的stdout赋值给环境变量?

8 投票
1 回答
3370 浏览
提问于 2025-04-15 22:09

在UNIX系统中,你可以用一种方法把脚本的输出赋值给一个环境变量,具体的做法可以参考这里。那么在Windows上,怎么做呢?

我有一个Python工具,目的是修正一个环境变量。这个脚本简单地将一串字符输出到标准输出(stdout)。在这个问题中,我的工具是用Python写的并不重要,它只是一个我可以在命令提示符下调用的程序,输出一行文本。

我想做的事情类似于这样(这是可以工作的):

set WORKSPACE=[ the output of my_util.py ]

运行这个命令后,WORKSPACE环境变量的值应该和我的工具通常打印出的文本完全一样。

这能做到吗?怎么做呢?


更新1:有同事建议:

python util.py | set /P WORKSPACE=

理论上,这样做应该能把Python脚本的标准输出赋值给环境变量WORKSPACE,但实际上并没有成功,问题出在哪里呢?

1 个回答

12

使用:

for /f "delims=" %A in ('<insert command here>') do @set <variable name>=%A

例如:

for /f "delims=" %A in ('time /t') do @set my_env_var=%A

...将会执行命令 "time /t",并把环境变量 "my_env_var" 设置为这个命令的结果。

如果你是在 .BAT 文件里面运行这个,记得用 %%A 而不是 %A。

撰写回答