本帖最后由 pcl_test 于 2016-7-16 09:37 编辑
set /a 进行数值计算是一个非常实用的指令,特别在FOR内可以不用开启变量延时非常强大- set a=0
- set b=0
- for /l %%1 in (1,1,5) do set /a a=((b+=a)+%%1)*5 &set /a a+=1
- echo %a% %b%
- pause>nul
复制代码 从上面这几句中就可以看出set /a的强大
但是在相同效果的另一句中却出现了异外!
执行下面这段代码!问题出现了!为什么?- set a=0
- set b=0
- for /l %%1 in (1,1,5) do (
- set /a a=((b+=a)+%%1)*5
- set /a a+=1
- )
- echo %a% %b%
- pause>nul
复制代码 提示:此处不应有 +%1)*5
是因为+%1的问题吗?- set a=0
- set b=0
- for /l %%1 in (1,1,5) do (
- set /a a=((b+=a)+a)*5
- set /a a+=1
- )
- echo %a% %b%
- pause>nul
复制代码 结果还是:此处不应有 +a)*5
再改:- set a=0
- set b=0
- for /l %%1 in (1,1,5) do (
- set /a a=((b+=a^)+%%1^)*5
- set /a a+=1
- )
- echo %a% %b%
- pause>nul
复制代码 通过!原来是后)要转义,
改成 set/a "a=((b+=a)+%%1)*5" 也通过!
那么是FOR闯的祸吗?- set a=0
- set b=0
- (
- set /a a=((b+=a)+a)*5
- set /a a+=1
- )
- echo %a% %b%
- pause>nul
复制代码 结果还是一样!
那么为什么转入字块后 SET /A 就出错呢?
大家一起来说说! |