标题: [文本处理] 批处理call变量延迟的的一些疑问 [打印本页]
作者: 悬崖之树 时间: 2012-7-11 21:03 标题: 批处理call变量延迟的的一些疑问
本帖最后由 canyuexiaolang 于 2012-7-11 22:13 编辑
代码1:- @echo off
- set str=abcdefg
- call echo %%str:~-3%%
- pause
复制代码
为什么显示 efg
而代码2:- @echo off
- set str=abcdefg
- call echo %%%%str:~-3%%%%
- pause
复制代码
则显示 %str:~-3%
为什么呢?
作者: canyuexiaolang 时间: 2012-7-11 22:45
- @echo off
- set str=abcdefg
- for /f "tokens=* delims=" %%i in ('call echo %%%%str:~-3%%%%') do echo %%i
- pause
复制代码
有趣。
作者: garyng 时间: 2012-7-11 22:58
应该是叫做 命令嵌套吧 跟变量延迟是两回事呢。
作者: CrLf 时间: 2012-7-12 00:15
call 具备二次扩展特性,会对 % 进行额外的扩展解释
作者: 悬崖之树 时间: 2012-12-5 21:02
本帖最后由 悬崖之树 于 2012-12-5 21:16 编辑
回复 2# canyuexiaolang
你的代码后怎么是 %def% 啊?
而下面的就正常:- @echo off
- set str=abcdef
- call call echo %%%%str:~-3%%%%
- pause
复制代码
但是把上面的 call call echo %%%%str:~-3%%%%放到你的代码里就不行了,仍旧是显示 %def%
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |