我有一个类似于这个的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资源管理器双击(,则不应出现此问题。