[ Last edited by oilio on 2007-3-10 at 09:14 PM ]作者: lxmxn 时间: 2007-3-11 09:37
Quote:
Originally posted by oilio at 2007-3-10 20:21:
谢谢lxmxn兄,真不知道说什么好,谢谢!这是我N次看到这个用法,因为之前一直都很弱,现在水平比以前稍微好那么一点,今天再看到这个用法觉得到 ...
兄不必这么客气啊,大家都在论坛里也是个缘分,共同学习共同进步嘛。
看到兄这些时的进步不小,真为兄感到高兴。作者: lxmxn 时间: 2007-3-11 10:03
Quote:
Originally posted by oilio at 2007-3-10 20:21:
我想那这个批处理用到set /a a+=1,其实主要作用就是计算从77步长值是1递增到99,一共递增了28次,但要得到数字总的个数,次数不包括71本身,所以计算一共是多少个数字就会少一个,所以这里用到set /a a+=1, 不知道我理解的对不对?
兄的理解有点偏差,这里一共是递增了99-71+1=29次,因为 for /l 循环包含了第一个数字,这里是71,你可以用for /l %a in (1,1,29) do 来试试,结果应该是一样的。set /a a+=1 的作用并不是使其递增数加一,而是使 a 的值没循环一次就增加1,这里循环了29次,所以结果最后应该是29了。作者: oilio 时间: 2007-3-11 10:13 好像不对啊,我想了一下,假如是for /l %a in (1,1,3)的话,从1到2是递增了1次,从2到3是递增第二次,一共是两次才对啊,这里确实是三个数,但应该递增次数是2次吧。这个命令应该是计算从1到3的个数的吧?不知道是不是我的理解力有问题,呵呵。有的时候感觉挺聪明,有的时候感觉钻牛角尖了,嘿嘿!累了,睡觉了,我再好好想想,说不定我休息一下就能想明白,呵呵。谢谢lxxm兄的回帖,使我收获良多。作者: zhoushijay 时间: 2007-3-11 10:15 for /l %a in (1,1,3) do
当%a=1时 计一次
当%a=2时 计一次
当%a=3时 计一次
所以应该是3次作者: oilio 时间: 2007-3-11 10:19 谢谢,周仕杰兄,原来我的问题出在这儿,关键是我说到递增,把这个给忘了。第一个数就开始计数的话,那就对了,是我自己把自己绕进去了,哈哈。谢谢。作者: 6622186 时间: 2007-3-15 11:14 我以前也试了很多次, 不能在同一行使用, 原来用变量延迟就可以了. 具体怎么用啊?作者: zh159 时间: 2007-3-15 11:38 这里变量延迟有两种使用方式:
1、启用变量延迟:
@echo off
setlocal EnableDelayedExpansion
set a=0
for /l %%i in (71,1,99) do set /a a+=1&echo !a!
pause>nul
2、用call
@echo off
set a=0
for /l %%i in (71,1,99) do set /a a+=1&call echo %%a%%
pause>nul作者: wxjlotus 时间: 2007-3-19 06:04 这个CALL有点搞不懂!作者: 13579246810 时间: 2007-4-3 02:40 路过 学习了 谢谢各位大师的赐教