循环变量为啥不能改变值?
bat吧
全部回复
仅看楼主
level 2
真呀真滑稽🌝
楼主
代码作用:从TXT读取每一行,把内容放在i,把i赋值给var,并输出。
rem
@echo
off
set var=66666666666666666
for /f %%i in (filename.txt) do (
set "var=%%i"
echo %%i
echo %var%
)
)
pause
2017年07月28日 07点07分
1
level 2
真呀真滑稽🌝
楼主
i 变量虽然每行都读取,但var的值还是没变,依然是循环外的值。。。
2017年07月28日 07点07分
2
level 2
真呀真滑稽🌝
楼主
为啥会这样呢,是不是有全局变量,局部变量的区别啊?
2017年07月28日 07点07分
3
level 2
真呀真滑稽🌝
楼主
各位老师教教我
2017年07月28日 07点07分
4
level 14
John▫Aº
变量延迟
2017年07月28日 11点07分
5
level 14
John▫Aº
简单地说,因为%在命令执行前就被解析了,所以同一行(用括号括起来的也算同一行)内的赋值语句是不会立即影响该行内的变量值的;那么为了能使之影响,就要用setlocal enabledelayedexpansion语句开启变量延迟,并在使用时以!代替%,例如!var!
2017年07月28日 11点07分
6
level 14
John▫Aº
开启变量延迟的语句使用后即在以后的生命周期内有效,除非取消。所以一般情况写在bat文件开头。
2017年07月28日 11点07分
7
真呀真滑稽🌝
问题已经解决了,谢谢您
刚开始接触批处理
2017年07月28日 11点07分
level 2
真呀真滑稽🌝
楼主
问题已经解决了,谢谢您
刚开始接触批处理
2017年07月28日 11点07分
8
1