如何制作更改环境变量的Windows批处理文件?

Sal*_*ley 3 windows scripting batch-file

是否可以创建一个可以对环境变量进行持久更改的批处理文件?

例如,我的installer.bat脚本将一些文件复制到计算机文件系统中的随机位置.我想将该位置添加到PATH环境变量中,以便程序可以在当前会话中运行.

仅供参考 - 我正在安装的东西经常变化:我希望每次运行程序时都要进行全新安装.此外,我不想覆盖其他以前安装的程序副本,以防万一其他(较旧的)实例仍在执行.

我希望能够做到这样的事情:

rem install_and_run.bat
install.bat 
myapplication.exe 
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用,因为install.bat永远不会"返回"主脚本.永远不会调用myapplication.exe.接下来我尝试了:

cmd /C install.bat
myapplication.exe 
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用,因为这意味着install.bat在一个完全独立的cmd.exe shell中运行.这意味着一旦脚本终止,环境变量更改都不会保留,因为cmd.exe也会终止.

必须有一种方法来创建一个更改环境变量的批处理文件

有什么建议?

Jay*_*uzi 6

在你的情况下,你想要的是什么

rem install_and_run.bat
call install.bat 
myapplication.exe
Run Code Online (Sandbox Code Playgroud)

也就是说,call用来调用install.bat,这样控件就会返回install_and_run.bat.

我认为你不明白环境变量是按进程的.您的批处理文件正在cmd.exe的实例中运行,并且该实例具有环境.当您编写时,cmd /C您正在创建cmd.exe的新实例,该实例具有自己的环境.然后install.bat对cmd.exe的新实例的环境进行"持久"更改.