Board logo

标题: [已结]百思不解,关于for…… [打印本页]

作者: arding     时间: 2006-1-8 20:50    标题: [已结]百思不解,关于for……

dos环境:

Microsoft Windows XP [版本 5.1.2600]

fl.txt的内容:

1111111111111111111
2222222222222222222
3333333333333333333

批处理内容(test.bat):

@echo off
set var1=00000000000000000
for /f %%i in (fl.txt) do set var1=%%i && echo %var1%
echo %var1%
pause

期望结果是:
1111111111111111111
2222222222222222222
3333333333333333333
3333333333333333333
请按任意键继续. . .

运行结果是:
0000000000000000000
0000000000000000000
0000000000000000000
3333333333333333333
请按任意键继续. . .

从最后的echo %var1%的输出结果:3333333333333333333 可知,在for语句中var1的值的确被修改了,可是为什么在for语句中的echo %var1%仍旧输出初始化的值呢?

[ Last edited by arding on 2006-1-12 at 17:13 ]
作者: arding     时间: 2006-1-9 14:41
唉,没人理。
不过在这里好像讨论的是同样的问题,是不是就没有办法呢?
http://www.cn-dos.net/forum/viewthread.php?tid=18050&fpage=9
作者: willsort     时间: 2006-1-10 14:34
Re arding:

      完成你所需要的功能需要使用新的变量定界符 ! ,要使用这个定界符,需要启动延缓变量扩展,通过 cmd /v:on 或者 setlocal EnableDelayedExpansion 来实现。这些内容,过去的主题中也有不少讨论,可以全文搜索一下。或者直接查看 cmd / setlocal / for
的命令行帮助,下面是你的程序修改后的代码。
@echo off & setlocal EnableDelayedExpansion
set var1=00000000000000000
for /f %%i in (fl.txt) do set var1=%%i && echo !var1!
echo %var1%
pause