有没有办法在批处理脚本中推送和弹出所有环境变量?

שלו*_*יין 10 batch environment-variables

有没有办法在批处理脚本中推送和弹出所有环境变量?例如,我想做这样的事情:

pushEnvironmentVariables
call "%VS140COMNTOOLS%\vsvars32.bat"
(do some stuff...)
popEnvironmentVariables
pushEnvironmentVariables
call "%VS90COMNTOOLS%\vsvars32.bat"
(do some other stuff...)
popEnvironmentVariables
Run Code Online (Sandbox Code Playgroud)

Lot*_*ngs 13

使用 setlocal,请参阅setlocal /?ss64.com/nt/setlocal

Setlocal
call "%VS140COMNTOOLS%\vsvars32.bat"
(do some stuff...)
Endlocal
Setlocal
call "%VS90COMNTOOLS%\vsvars32.bat"
(do some other stuff...)
Endlocal
Run Code Online (Sandbox Code Playgroud)

要保存您可以执行的当前变量状态

set >MyVarStatus.txt
Run Code Online (Sandbox Code Playgroud)

并稍后恢复

@Echo off
For /f "tokens=1* delims==" %%A in (
  'findstr /V "^Path" MYVarStatus.txt '
) Do Set %%A=%%B
Run Code Online (Sandbox Code Playgroud)

这将排除 Path 变量。