Board logo

标题: 小帮下忙哪高手,使用for处理文本,简单的。 [打印本页]

作者: loquat     时间: 2009-9-16 09:44    标题: 小帮下忙哪高手,使用for处理文本,简单的。
AD;0;张三;;18600000000;;;;;;;;;;;湖南;;;;
AD;1;李四;;13812345678;;;;;;;;;;;湖北;;;;

要把里面的这些电话号码都提取出来保存到txt

希望高手写了P,再给一个简单的注释和帮助吧。

便于菜鸟偶能好好的学习掌握for的用法。

看教程不如实战进步得快,以前看非常批处理的教程,年余了现在还是菜菜鸟。

过来CD-DOS不到一月就小有收获了。呵呵。

主要是这边的提问回答气氛稍微好点。。。

作者: Hanyeguxing     时间: 2009-9-16 10:07
@echo off
for /f "tokens=4 delims=;" %%a in (test.txt) do >>test_.txt echo %%a

以;替换默认的空格和制表符为分隔符,这样解析时电话那一段就是第4区段,将这一区段赋值给变量%%a。
作为一个初学者,要善于使用echo和pause,在适当的位置,观察分析变量的变化。
例如这里,就可以写成
@echo off
for /f "tokens=1,2,3,4,5 delims=;" %%a in (test.txt) do echo %%a一%%b二%%c三%%d四%%e
pause
通过自己的猜测,实验,论证得出正确的结论

作者: tk420199     时间: 2009-9-17 23:24
setlocal enabledelayedexpansion
for /f “tokens=5 delims=:" %%i in (test.txt) do (set /a b+=1 &
echo %b%%%i)
这样为什么不行呢?

作者: Hanyeguxing     时间: 2009-9-17 23:37
Originally posted by tk420199 at 2009-9-17 23:24:
setlocal enabledelayedexpansion
for /f “tokens=5 delims=:" %%i in (test.txt) do (set /a b+=1 &
echo %b%%%i)
这样为什么不行呢?

1,tokens=5 delims=:"应写成"tokens=5 delims=:",英文引号使用错误。
2,&是连接符,他必须处于两个命令之间。
3,%b%应该写成!b!,动态捕获他的变化。
4,在这里,set /a b+=1和&之间最好不要有空格,因为赋值时,是将=和&之间的所有字符都赋值,也包括空格,容易产生问题。

setlocal enabledelayedexpansion
for /f "tokens=5 delims=:" %%i in (test.txt) do set /a b+=1&echo !b!%%i


Last edited by Hanyeguxing on 2009-9-17 at 23:49 ]

作者: tk420199     时间: 2009-9-18 00:00
谢谢了!忘记是用!!来表示了。
讲的非常详细