使用python调用设置环境变量的批处理脚本并运行另一个使用它们的程序

Posted

技术标签:

【中文标题】使用python调用设置环境变量的批处理脚本并运行另一个使用它们的程序【英文标题】:Use python to call a batch script that sets env variables and run another program that uses them 【发布时间】:2014-09-15 03:42:12 【问题描述】:

我需要从 Python 中调用一个批处理脚本来设置环境变量,然后使用这些环境变量来完成其他程序的执行。我在运行python的windows环境中。

我不能先调用Popen("setupEnv.bat"),然后再调用Popen("command args"),因为批处理脚本完成后环境变量丢失了。由于这失败了,我试图手动打开一个 cmd 提示符并分别拦截每个命令的输出,但是我遇到了这个问题:

proc = subprocess.Popen("cmd.exe",stdin=subprocess.PIPE,stdout=subprocess.PIPE,
               stderr=subprocess.STD  OUT,shell=True)
stdin.write("setupEnv.bat")
stdin.write("command args")

我需要分别截取这些的输出。是否有某种机制可以暂停子进程或等待其输出。 proc.communicate()proc.wait() 都在等待子进程终止。我需要将两个单独的输入发送到一个进程并记录每个输入的响应。

谢谢

【问题讨论】:

【参考方案1】:

这可能不是您正在寻找的内容 您可以获取 var 的值,然后将它们存储在文件中。 之后使用其他程序/语言获取文本文件的内容。就这样做:) 希望这回答了您的问题!

【讨论】:

以上是关于使用python调用设置环境变量的批处理脚本并运行另一个使用它们的程序的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 package.json 调用设置环境变量并让其他脚本和命令可以访问这些变量的脚本

Python 脚本未在 crontab 中运行调用 pysaunter

进入由 shell 脚本设置的 perl 程序环境变量

使用Powershell脚本启动的批处理文件设置环境变量

在python脚本中设置环境变量

用java调用python脚本,单独的python脚本可以运行,但是在java里面调用的时候告知缺少模块。怎么破?