中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]百思不解,关于for……
作者:
标题: [已结]百思不解,关于for…… 上一主题 | 下一主题
arding
初级用户





积分 90
发帖 38
注册 2006-1-6
状态 离线
『楼 主』:  [已结]百思不解,关于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 ]

2006-1-8 20:50
查看资料  发短消息 网志   编辑帖子  回复  引用回复
arding
初级用户





积分 90
发帖 38
注册 2006-1-6
状态 离线
『第 2 楼』:  

唉,没人理。
不过在这里好像讨论的是同样的问题,是不是就没有办法呢?
http://www.cn-dos.net/forum/viewthread.php?tid=18050&fpage=9

2006-1-9 14:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 3 楼』:  

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




※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-1-10 14:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: