Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何生成更改环境变量的Windows批处理文件?_Windows_Scripting_Batch File - Fatal编程技术网

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

如何生成更改环境变量的Windows批处理文件?,windows,scripting,batch-file,Windows,Scripting,Batch File,是否可以创建一个批处理文件,该批处理文件可以对环境变量进行持久性更改 例如,my installer.bat脚本将一些文件复制到计算机文件系统中的随机位置。我想将该位置添加到PATH环境变量中,以便程序可以在当前会话中运行 仅供参考-我正在安装的东西变化非常频繁:每次运行程序时,我都想重新安装。此外,我不想过度编写以前安装的其他程序副本,以防其他(较旧的)实例仍在执行 我希望能够做到这样: rem install_and_run.bat install.bat myapplication.ex

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

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

仅供参考-我正在安装的东西变化非常频繁:每次运行程序时,我都想重新安装。此外,我不想过度编写以前安装的其他程序副本,以防其他(较旧的)实例仍在执行

我希望能够做到这样:

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为您提供了正确的解决方案。如果你愿意,我可以发布我的代码