中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-23 14:44
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,273 会员排行
DOS批处理 & 脚本技术(批处理室) » [已结]百思不解,关于for……
可打印版本  1,825 / 2
第1楼 arding 发表于 2006-01-08 20:50
初级用户 发帖 38 积分 90
[已结]百思不解,关于for……
dos环境:

Microsoft Windows XP

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 ]
第2楼 arding 发表于 2006-01-09 14:41
初级用户 发帖 38 积分 90
唉,没人理。
不过在这里好像讨论的是同样的问题,是不是就没有办法呢?
http://www.cn-dos.net/forum/viewthread.php?tid=18050&fpage=9
第3楼 willsort 发表于 2006-01-10 14:34
元老会员 发帖 1,512 积分 4,432
Re arding:

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

[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023