如何在Python脚本中使用值设置环境变量

2 投票
1 回答
1929 浏览
提问于 2025-04-18 07:54

我在设置环境变量时遇到了一些问题,查了一些其他的例子,比如在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 个回答

2

你没有清楚地说明几个批处理文件和你的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命令里缺少了几个百分号……

撰写回答