回复 11# GNGW
嗯???自己动手啦
参考6楼链接
根据代码 自己思考流程或画或写(如下面的) 然后观察流程和实际执行结果
就算实际执行结果不一致 也总有自己的理解或见解吧
不知道对不对 是不是这样 就多弄些例子验证并总结就是
代码- setlocal enabledelayedexpansion
- @echo ^^!
- echo ^^
- pause
复制代码 流程- 读取第1行,得到setlocal enabledelayedexpansion
- 读取到的不包含% , 不需要预处理(或处理前后一致)
- 解析读取到的内容 , 解析后得到命令setlocal和命令参数enabledelayedexpansion
- 显示解析到的内容setlocal enabledelayedexpansion(因为命令开头不是@ , 之前也没有关闭回显)
- 执行命令setlocal , 执行后开启了变量延迟
-
- 读取第2行,得到@echo ^^!
- 读取到的不包含% , 不需要预处理(或处理前后一致)
- 解析读取到的内容 , 解析后得到以@开头的命令echo和命令参数^!
- 将解析后的内容扔给变量延迟处理(因为开启了变量延迟) , 处理后得到以@开头的命令echo和命令参数!
- 执行echo命令 , 显示输出一个!
-
- 继续读取第3行,得到echo ^^
- 不需要预处理
- 解析读取到的内容 , 解析后得到命令echo和命令参数^
- 显示解析到的内容echo ^
- 将解析后的内容扔给变量延迟处理 , 处理后得到命令echo和命令参数^(处理前后一致 , 因为内容不包含!)
- 执行echo命令 , 显示输出一个^
-
- 继续读取第4行,得到pause
- 不需要预处理
- 解析读取到的内容 , 得到命令pause
- 显示解析到的内容pause
- 将解析后的内容扔给变量延迟处理 , 处理后得到命令pause
- 执行命令pause , 请按任意键继续. . .
-
- 按任意键后 , 结束
复制代码
|