如何在Python脚本中使用值设置环境变量
我在设置环境变量时遇到了一些问题,查了一些其他的例子,比如在Python脚本中设置环境变量,其中一个例子是有效的。
1. 我在一个Python脚本中有一个叫“version”的变量,里面存了一个值。
2. 现在,我想把这个值设置为Windows中的环境变量BUILD_VER(目前是在Windows上,但我希望能在不同操作系统上通用)。通常在批处理文件中用简单的SET BUILD_VER=%version%就可以做到(这个环境变量会被另一个批处理文件使用,用来构建软件,我想这和这里的问题无关)。
现在,回到我的问题。
有没有办法在同一个Python脚本中把BUILD_VER设置为VERSION,并把它传递给批处理文件?还有其他的想法吗?我在批处理文件中尝试了以下内容,但不确定Python脚本是否在运行?运行以下内容没有输出任何东西。
@echo off
FOR /F %v IN ('build_ver.py 123637') DO SET BUILD_VER=%v
1 个回答
你没有清楚地说明几个批处理文件和你的Python脚本之间的关系,所以我们来分析一下几种可能性:
Python脚本定义了一个变量,然后执行一个批处理文件,这个批处理文件也设置了同样的变量,然后Python脚本自己继续运行,执行其他批处理文件,这些文件想要访问第一个批处理文件中定义的变量。这是完全不可能的。就这样。
Python脚本定义了一个变量,执行一个批处理文件,这个批处理文件设置了同样的变量,然后这个批处理文件继续运行,执行其他可以继承这个变量的批处理文件。这是完全有效的。在这种情况下,Python脚本只是用来定义变量并启动第一个批处理文件。
第一个批处理文件开始执行,运行Python脚本只是为了获取变量的值,定义它,然后执行其他可以继承这个变量的批处理文件。这是最简单的解决方案;在这种情况下,Python脚本仅用于获取变量的值。
实现最后一种解决方案的方法就像你示例中的那样:
@echo off
rem Execute python script passing to it the first parameter of this Batch file
FOR /F %%v IN ('build_ver.py %1') DO SET BUILD_VER=%%v
echo Value defined by python script: %BUILD_VER%
rem Call another Batch file that inherits this variable:
call AnotherBatch.bat
注意,在你的代码中,FOR /F命令里缺少了几个百分号……