批处理 for循环中set n+=1 为什么不起作用

2024-11-23 05:18:10
推荐回答(3个)
回答1:

1、通过set命令使用数字表达式时,需要使用/A参数。

/A 命令行开关指定等号右边的字符串为被评估的数字表达式。该表达式

评估器很简单并以递减的优先权顺序支持下列操作:
    ()                  - 分组
    ! ~ -               - 一元运算符
    * / %               - 算数运算符
    + -                 - 算数运算符
    << >>               - 逻辑移位
                       - 按位“与”
    ^                   - 按位“异”
    |                   - 按位“或”
    = *= /= %= += -=    - 赋值
      &= ^= |= <<= >>=
    ,                   - 表达式分隔符

2、当进行set n+=1的时候,可以使用for的如下命令格式进行替换:

FOR /L %variable IN (start,step,end) DO command [command-parameters]
    该集表示以增量形式从开始到结束的一个数字序列。因此,(1,1,5)将产生序列
    1 2 3 4 5,(5,-1,1)将产生序列(5 4 3 2 1)

回答2:

SET /A 才可以进行算术运算

回答3:

可能要用变量延迟吧!
例如:

setlocal enabledelayedexpansion

if exist "Temp\%dat%-%timo%-PASS-%name%" for /f "usebackq tokens=*" %%l in ("Temp\%dat%-%timo%-PASS-%name%") do set /a a= !a! + 1

不过你的好像少了个/a ,set /a才是计算!