蝙蝠,如何防止环境变量泄漏到父进程中



我有一个类似于这个的bat文件

rem build.bat
rem add visual studio paths to env
call "%PROGRAMFILES(X86)%Microsoft Visual Studio2019CommunityVCAuxiliaryBuildvcvarsall.bat" x86_amd64
cl.exe blabla

运行几次后,我得到了错误The input line is too long.,因为每次调用脚本时,vcvarsall.bat似乎都会附加到路径变量中

我用build.bat调用脚本

我认为不应该在两次运行之间保存环境变量。有什么方法可以使变量不泄漏到调用cmd shell中吗?

您应该通过将setlocal放在开头,将endlocal放在末尾来本地化批处理文件的环境(后者可能会被省略,因为它在退出脚本时会隐式执行(。

您可以在子进程中启动build.bat。

cmd /c build.bat

父进程中的变量不受子进程的影响。

据我所知,环境变量不会在运行之间保存,这是正确的,但;运行";在这种情况下;运行";批处理文件,但不包括运行批处理文件的命令提示符。

在我看来,您已经打开了命令提示符。在那里你启动";build.bat";文件,一遍又一遍。

但是,如果要从命令提示符之外启动批处理文件(如从Windows资源管理器双击(,则不应出现此问题。

最新更新