找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25292|回复: 2

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

[复制链接]
发表于 2018-3-6 15:36:55 | 显示全部楼层 |阅读模式
大家好,

本人才接触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  到底是不是即时计算?还是有变量延迟? 谢谢
发表于 2018-3-6 19:48:18 | 显示全部楼层
cho A is now !Count!
SET /A Count+=3

是执行顺序问题,和即时计算、变量延迟没有一毛钱关系
 楼主| 发表于 2018-3-15 15:20:43 | 显示全部楼层
是执行顺序问题,和即时计算、变量延迟没有一毛钱关系
ivor 发表于 2018-3-6 19:48


就是改变了行的顺序,却没有改变输出结果。麻烦你看一下,谢谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 04:54 , Processed in 0.019293 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表