循环变量为啥不能改变值?
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
变量延迟
2017年07月28日 11点07分 5
level 14
简单地说,因为%在命令执行前就被解析了,所以同一行(用括号括起来的也算同一行)内的赋值语句是不会立即影响该行内的变量值的;那么为了能使之影响,就要用setlocal enabledelayedexpansion语句开启变量延迟,并在使用时以!代替%,例如!var!
2017年07月28日 11点07分 6
level 14
开启变量延迟的语句使用后即在以后的生命周期内有效,除非取消。所以一般情况写在bat文件开头。
2017年07月28日 11点07分 7
问题已经解决了,谢谢您[哈哈]刚开始接触批处理
2017年07月28日 11点07分
level 2
问题已经解决了,谢谢您[哈哈]刚开始接触批处理
2017年07月28日 11点07分 8
1