如何生成更改环境变量的Windows批处理文件?
是否可以创建一个批处理文件,该批处理文件可以对环境变量进行持久性更改 例如,my installer.bat脚本将一些文件复制到计算机文件系统中的随机位置。我想将该位置添加到PATH环境变量中,以便程序可以在当前会话中运行 仅供参考-我正在安装的东西变化非常频繁:每次运行程序时,我都想重新安装。此外,我不想过度编写以前安装的其他程序副本,以防其他(较旧的)实例仍在执行 我希望能够做到这样:如何生成更改环境变量的Windows批处理文件?,windows,scripting,batch-file,Windows,Scripting,Batch File,是否可以创建一个批处理文件,该批处理文件可以对环境变量进行持久性更改 例如,my installer.bat脚本将一些文件复制到计算机文件系统中的随机位置。我想将该位置添加到PATH环境变量中,以便程序可以在当前会话中运行 仅供参考-我正在安装的东西变化非常频繁:每次运行程序时,我都想重新安装。此外,我不想过度编写以前安装的其他程序副本,以防其他(较旧的)实例仍在执行 我希望能够做到这样: rem install_and_run.bat install.bat myapplication.ex
rem install_and_run.bat
install.bat
myapplication.exe
不幸的是,这不起作用,因为install.bat永远不会“返回”到主脚本。永远不会调用myapplication.exe。接下来我试着:
cmd /C install.bat
myapplication.exe
不幸的是,这不起作用,因为这意味着install.bat在一个完全独立的cmd.exe shell中运行。这意味着一旦脚本终止,环境变量的任何更改都不会持久,因为cmd.exe也会终止
必须有一种方法来生成更改环境变量的批处理文件
有什么建议吗?嗯,你可以:
设置envariablename=“一些值”
至于从另一个批处理文件中调用单独的批处理文件,我相信调用命令会返回
rem安装并运行.bat
调用install.bat
myapplication.exe
在您的情况下,您需要的是
rem install_and_run.bat
call install.bat
myapplication.exe
也就是说,使用call
调用install.bat
,这样控件将返回到install\u和\u run.bat
我想你不明白环境变量是每个进程的。批处理文件正在cmd.exe实例中运行,该实例具有一个环境。编写
cmd/C
时,您正在创建一个新的cmd.exe实例,它有自己的环境。然后,install.bat
对cmd.exe的新实例的环境进行了“持久”更改。您不能创建或修改环境变量,并使其在批处理脚本的控制台会话之间保持不变,AFAIK
我有一个VBScript脚本和一个批处理脚本包装器,我使用它,但我认为Jay为您提供了正确的解决方案。如果你愿意,我可以发布我的代码