为什么我的bat脚本for循环语句里面的值不会自增?
如果你曾经写过这样的代码
@echo off
set /a sum=0
for /r %%i in (*) do (
set /a sum=sum+1
echo %sum%
)
pause
那么你就会发现,你输出的结果会是清一色的0
这究竟是怎么回事?难道说是我代码敲错了?其实你没敲错,这个是批命令本来就是这样,我们的window把整个for循环其实看成了一个语句,既然是一个语句,那么语句内的变量自然就不会记录
同时如果你要是在这个for循环的外面再输出一次sum
你就会发现他的值变成了正常的值
但是这给我们的编程带来了很多麻烦,我们要怎么解决呢?
使用
setlocal enabledelayedexpansion
把setlocal enabledelayedexpansion
加在我们for循环的前面就可以解决
set local enbale delayed expansion 如果英语还过得去的朋友稍微记一下就能记得住
注意,在这个延时解释变量开启
的时候,for循环内部的变量不再使用%sum%
而是使用!sum!
的形式,如果依旧使用%sum%
就会出现意料之外的错误
@echo off
set /a sum=0
setlocal enabledelayedexpansion
for /r %%i in (*) do (
set /a sum=sum+1
echo !sum!
)
pause
作者:bemake
出处:https://www.cnblogs.com/BEMAKE/p/16018662.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)