Bat批处理setlocal enabledelayedexpansion详解
详细介绍
setlocal:
setlocal
命令用于启动本地环境变量设置。这意味着在其后的命令中对环境变量的修改仅在当前脚本或批处理文件中有效,不会影响到调用该脚本或批处理文件的父进程。
enabledelayedexpansion:
enabledelayedexpansion
是setlocal
的一个选项,用于启用延迟环境变量扩展。- 延迟环境变量扩展允许在脚本执行过程中动态地获取和更新环境变量的值。例如:延迟环境变量扩展允许在for循环或其他需要动态评估环境变量的场景中使用
!variable!
语法来访问变量的值,而不是使用%variable%
语法。这在处理循环或需要多次更新变量值的场景中非常有用。
应用案例
假设需要在一个批处理脚本中处理一个包含多个元素的列表,并对每个元素进行一些操作。使用延迟环境变量扩展可以方便地实现这一需求。
示例脚本
1 | @echo off |
解释
启用延迟环境变量扩展:
1
setlocal enabledelayedexpansion
定义列表:
1
set "list=apple banana cherry"
处理前输出列表元素:
1
2
3
4echo Before processing:
for %%i in (%list%) do (
echo %%i
)处理每个元素:
1
2
3
4
5
6echo Processing each element:
for %%i in (%list%) do (
set "element=%%i"
set "element=!element:a=A!"
echo !element!
)- 在循环中,使用
set "element=%%i"
将当前元素赋值给element
变量。 - 使用
set "element=!element:a=A!"
将element
变量中的小写a
替换为大写A
。 - 使用
echo !element!
输出处理后的元素。
- 在循环中,使用
结束本地环境变量设置:
1
endlocal
输出结果
1 | Before processing: |
参考链接:https://blog.csdn.net/qq_52964132/article/details/140573911
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 竹山一叶!
评论