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

 我来答
吉祥二进制
高粉答主

2015-08-14 · 科技改变生活,生活改变科技。
吉祥二进制
采纳数:33926 获赞数:84570

向TA提问 私信TA
展开全部

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)
314ccp
2011-12-11 · TA获得超过5625个赞
知道大有可为答主
回答量:1497
采纳率:0%
帮助的人:2138万
展开全部
SET /A 才可以进行算术运算
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hu_jun0204
2011-12-11 · TA获得超过558个赞
知道小有建树答主
回答量:145
采纳率:0%
帮助的人:117万
展开全部
可能要用变量延迟吧!
例如:

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才是计算!
追问
echo off&setlocal enabledelayedexpansion
set n=0

pause
for /f "tokens=1,2 delims= " %%i in ('dir/b *.jpg') do (
set /a n+=1
echo !n!
)
pause

这样就行了,谢谢!
追答
哈哈,行就采用啦!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式