[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] bat里for /l %%A IN (,,) DO {}的循环体里怎么用循环变量

大家好,

本人才接触bat批处理 问的问题很基础 大家不要笑。。。
请教大家一个问题,也许是关于变量延迟定义的(不太清楚)

在如下的代码中,A和Count是什么关系? 为什么“SET /A Count+=3” 在 “Echo A is now %%A” 之前 ,结果却显示%%A与Count的值是一样的?
  1. @Echo off
  2. setlocal enabledelayedexpansion
  3. SET /A Count=1
  4. for /L %%A in (1, 3, 73) do (  
  5. Echo A is now !Count!
  6. SET /A Count+=3
  7. Echo A is now %%A
  8. )
  9. ping 127.1 -n 6 >nul
复制代码
如果把这两句调换,得到的结果还是一样的:
  1. @Echo off
  2. setlocal enabledelayedexpansion
  3. SET /A Count=1
  4. for /L %%A in (1, 3, 73) do (  
  5. Echo A is now !Count!
  6. Echo A is now %%A
  7. SET /A Count+=3
  8. )
  9. ping 127.1 -n 6 >nul
复制代码
但是如果把这个自加放到循环体的第一句,则会即时计算:
  1. @Echo off
  2. setlocal enabledelayedexpansion
  3. SET /A Count=1
  4. for /L %%A in (1, 3, 73) do (
  5. SET /A Count+=3
  6. Echo A is now !Count!
  7. Echo A is now %%A
  8. )
  9. ping 127.1 -n 6 >nul
复制代码
求大神指点! SET /A Count+=3  到底是不是即时计算?还是有变量延迟? 谢谢

cho A is now !Count!
SET /A Count+=3

是执行顺序问题,和即时计算、变量延迟没有一毛钱关系

TOP

是执行顺序问题,和即时计算、变量延迟没有一毛钱关系
ivor 发表于 2018-3-6 19:48


就是改变了行的顺序,却没有改变输出结果。麻烦你看一下,谢谢。

TOP

返回列表