标题: for循环后为什么总是重复最后一行?(涉及跳出循环)
[打印本页]
作者: bd123456789
时间: 2008-1-20 17:02
标题: 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 ]
作者: logan0279
时间: 2008-1-20 18:07
批处理: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 ]
作者: 429499381
时间: 2008-1-20 18:39
@echo off & setlocal enabledelayedexpansion
for /f "delims=*" %%i in (1.txt) do (
set val=%%i
echo !val:~0,3!>>2.txt
)
这个比较简洁点, 你看看
作者: bd123456789
时间: 2008-1-21 09:03
标题: 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 ]
作者: hlighta
时间: 2008-1-21 21:40
不好意思,不明白!val:~0,3!是什么意思,怎么个用法?