1 SETLOCAL & ENDLOCAL
- SETLOCAL: 开始批处理文件中环境改动的本地化操作;
- ENDLOCAL: 结束批处理文件中环境改动的本地化操作;
在执行 SETLOCAL之后所做的环境改动只限于批处理文件。要还原原先的设置,必须执行ENDLOCAL。达到批处理文件结尾时,对于该批处理文件的每个尚未执行的 SETLOCAL 命令,都会有一个隐含的 ENDLOCAL 被执行。
示例-1
@REM
echo %PATH%
setlocal
SET PATH="Hello world!"
echo %PATH%
endlocal
echo %PATH%
pause
[打印输出]
C:\Users\wwchao\Desktop\batch>echo C:\AStyle\bin;D:\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\bin;D:\Microsoft VS Code\bin
C:\AStyle\bin;D:\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\bin;D:\Microsoft VS Code\bin
C:\Users\wwchao\Desktop\batch>setlocal
C:\Users\wwchao\Desktop\batch>SET PATH="Hello world!"
C:\Users\wwchao\Desktop\batch>echo "Hello world!"
"Hello world!"
C:\Users\wwchao\Desktop\batch>endlocal
C:\Users\wwchao\Desktop\batch>echo C:\AStyle\bin;D:\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\bin;D:\Microsoft VS Code\bin
C:\AStyle\bin;D:\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\bin;D:\Microsoft VS Code\bin
C:\Users\wwchao\Desktop\batch>pause
请按任意键继续. . .
注意事项
1.使用 setlocal
当您在脚本或批处理文件外使用 setlocal 时,将没有效果。
2.更改环境变量
运行批处理文件时使用 setlocal 更改环境变量。运行 setlocal 后所做的环境更改是批处理文件的本地更改。cmd.exe 在遇到 endlocal 命令或者到达批处理文件的结尾时将恢复上一次的设置。
3.在批处理程序中可以包含多个 setlocal 或 endlocal 命令(即嵌套命令)。
2 参考链接
[1] 批处理文件里setlocal是什么意思?
[2] .bat文件中set和setlocal的用法
[3] setlocal /?