中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-12 10:06
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 小帮下忙哪高手,使用for处理文本,简单的。 查看 767 回复 4
楼 主 小帮下忙哪高手,使用for处理文本,简单的。 发表于 2009-09-16 09:44 ·  中国 湖南 长沙 电信
初级用户
★★
积分 81
发帖 80
注册 2009-08-30 06:32
16年会员
UID 151201
性别 男
状态 离线
AD;0;张三;;18600000000;;;;;;;;;;;湖南;;;;
AD;1;李四;;13812345678;;;;;;;;;;;湖北;;;;

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

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

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

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

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

主要是这边的提问回答气氛稍微好点。。。
2 发表于 2009-09-16 10:07 ·  中国 吉林 延边朝鲜族自治州 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
@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
通过自己的猜测,实验,论证得出正确的结论
3 发表于 2009-09-17 23:24 ·  中国 江西 吉安 电信
初级用户
积分 40
发帖 20
注册 2008-07-21 10:28
18年会员
UID 121816
性别 男
状态 离线
setlocal enabledelayedexpansion
for /f “tokens=5 delims=:" %%i in (test.txt) do (set /a b+=1 &
echo %b%%%i)
这样为什么不行呢?
4 发表于 2009-09-17 23:37 ·  中国 吉林 延边朝鲜族自治州 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
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 ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
tk420199 +2 2009-09-17 23:59
5 发表于 2009-09-18 00:00 ·  中国 江西 吉安 电信
初级用户
积分 40
发帖 20
注册 2008-07-21 10:28
18年会员
UID 121816
性别 男
状态 离线
谢谢了!忘记是用!!来表示了。
讲的非常详细
论坛跳转: