我需要在Windows上编写一个脚本来调用批处理文件来设置一些环境变量,然后执行一些使用这些环境变量的操作。
如果调用脚本本身是批处理文件,则可以正常工作。
能够在Python中编写调用脚本会有一些优点,但是当我尝试这样做时,批处理文件设置的环境变量在返回后不会保留。我猜这是因为subprocess.check_call(..., shell=True)
产生了命令shell的新副本,当它在批处理文件的末尾死亡时,它会获取环境变量。
有没有办法让环境变量在从Python调用的批处理文件设置时保持不变,或者最好将自己重新调用自己作为批处理文件的调用脚本?
答案 0 :(得分:1)
使用Setx
设置变量。重新启动后,新的Cmd提示将立即启动,其他程序将立即启动。现有的不会拿起它。请使用Set
。
Rem Add filter.bat to the path if not in there, setx fails if it's already there
setx path %~dp0;%path% 1>nul 2>nul