批处理for中的变量自加
@echooffsetlocalenabledelayedexpansionset/ana=1for%%min(*.txt)do(set/ana+=1@echo%na%)...
@echo off
setlocal enabledelayedexpansion
set /a na=1
for %%m in (*.txt)do (
set /a na+=1
@echo %na%)
@echo %na%
set na=
为什么for中na的值不变,for结束后却变了。怎样在for中使na变呢? 展开
setlocal enabledelayedexpansion
set /a na=1
for %%m in (*.txt)do (
set /a na+=1
@echo %na%)
@echo %na%
set na=
为什么for中na的值不变,for结束后却变了。怎样在for中使na变呢? 展开
展开全部
将%na%改为!na!就可以使na的值在for中每次循环的值改变,详情请查询for变量延迟
@echo off
setlocal enabledelayedexpansion
set /a na=1
for %%m in (*.txt)do (
set /a na+=1
@echo !na!)
@echo %na%
set na=
@echo off
setlocal enabledelayedexpansion
set /a na=1
for %%m in (*.txt)do (
set /a na+=1
@echo !na!)
@echo %na%
set na=
更多追问追答
追问
能说一下%和!的区别吗?
追答
如果你希望变量在for中每次循环值都更新,就需要开启变量延迟
语句为setlocal enabledelayedexpansion
并将变量使用!的方式进行使用
!a!和%a%都表示a变量,只不过在for中!a!每次循环的值都是a当前的值,而%a%不能在循环中更新,只有在结束后才能显示出最后的结果,具体原因请查询【for变量延迟】
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询