中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » for循环后为什么总是重复最后一行?(涉及跳出循环)
作者:
标题: for循环后为什么总是重复最后一行?(涉及跳出循环) 上一主题 | 下一主题
bd123456789
中级用户





积分 360
发帖 216
注册 2007-5-29
状态 离线
『楼 主』:  for循环后为什么总是重复最后一行?(涉及跳出循环)

批处理:A.BAT
setlocal enabledelayedexpansion
for /f "delims=*" %%i in (源文件.txt) do (
set val=%%i
call :ss
)
:ss
echo !val:~0,3!>>输出.txt
goto:eof

源文件:源文件.txt
19 2 8 8 8.168 888.0888.1888
29 3 8 8 8.178 888.0888.1888
39 4 8 8 8.188 888.0888.1888
19 5 8 8 8.198 888.0888.1888
59 6 8 8 8.108 888.0888.1888

输出结果
19
29
39
19
59
59


问题
输出结果总是有6行(应该是5行),即最后一行总是重复的?为什么?
另外,如何解决?

[ Last edited by bd123456789 on 2008-1-20 at 05:12 PM ]

2008-1-20 17:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
logan0279
初级用户





积分 100
发帖 45
注册 2007-12-11
状态 离线
『第 2 楼』:  

批处理:A.BAT
setlocal enabledelayedexpansion
for /f "delims=*" %%i in (源文件.txt) do (
set val=%%i
call :ss
)
goto _end

:ss
echo !val:~0,3!>>输出.txt

:_end

按你原来那个在FOR执行完了之后会继续执行下面的:SS这一段,自然会有两个59了!

[ Last edited by logan0279 on 2008-1-20 at 06:09 PM ]

2008-1-20 18:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
429499381
中级用户





积分 452
发帖 202
注册 2006-12-21
状态 离线
『第 3 楼』:  

@echo off & setlocal enabledelayedexpansion
for /f "delims=*" %%i in (1.txt) do (
set val=%%i
echo !val:~0,3!>>2.txt
)

这个比较简洁点, 你看看

2008-1-20 18:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bd123456789
中级用户





积分 360
发帖 216
注册 2007-5-29
状态 离线
『第 4 楼』:  OK

OK,二楼说的正确

想不到,标签段也会继续执行

三楼更简洁,测试一下,原来以为在FOR循环内无法在直接对变量提取子字符串

另外,为什么不能更简洁一点 → 会导致出错!

@echo off & setlocal enabledelayedexpansion
for /f "delims=*" %%i in (1.txt) do (
echo !%%i:~0,3!>>2.txt
)

即删除了赋值语句,直接将变量代入!!中呢?

[ Last edited by bd123456789 on 2008-1-21 at 04:24 PM ]

2008-1-21 09:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hlighta
初级用户





积分 21
发帖 12
注册 2008-1-20
状态 离线
『第 5 楼』:  

不好意思,不明白!val:~0,3!是什么意思,怎么个用法?

2008-1-21 21:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: