标题: [数值计算] bat里for /l %%A IN (,,) DO {}的循环体里怎么用循环变量 [打印本页]
作者: iangie 时间: 2018-3-6 15:36 标题: bat里for /l %%A IN (,,) DO {}的循环体里怎么用循环变量
大家好,
本人才接触bat批处理 问的问题很基础 大家不要笑。。。
请教大家一个问题,也许是关于变量延迟定义的(不太清楚)
在如下的代码中,A和Count是什么关系? 为什么“SET /A Count+=3” 在 “Echo A is now %%A” 之前 ,结果却显示%%A与Count的值是一样的?- @Echo off
- setlocal enabledelayedexpansion
- SET /A Count=1
- for /L %%A in (1, 3, 73) do (
- Echo A is now !Count!
- SET /A Count+=3
- Echo A is now %%A
- )
- ping 127.1 -n 6 >nul
复制代码
如果把这两句调换,得到的结果还是一样的:- @Echo off
- setlocal enabledelayedexpansion
- SET /A Count=1
- for /L %%A in (1, 3, 73) do (
- Echo A is now !Count!
- Echo A is now %%A
- SET /A Count+=3
- )
- ping 127.1 -n 6 >nul
复制代码
但是如果把这个自加放到循环体的第一句,则会即时计算:- @Echo off
- setlocal enabledelayedexpansion
- SET /A Count=1
- for /L %%A in (1, 3, 73) do (
- SET /A Count+=3
- Echo A is now !Count!
- Echo A is now %%A
- )
- ping 127.1 -n 6 >nul
复制代码
求大神指点! SET /A Count+=3 到底是不是即时计算?还是有变量延迟? 谢谢
作者: ivor 时间: 2018-3-6 19:48
cho A is now !Count!
SET /A Count+=3
是执行顺序问题,和即时计算、变量延迟没有一毛钱关系
作者: iangie 时间: 2018-3-15 15:20
是执行顺序问题,和即时计算、变量延迟没有一毛钱关系
ivor 发表于 2018-3-6 19:48
就是改变了行的顺序,却没有改变输出结果。麻烦你看一下,谢谢。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |