中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-13 19:02
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]批处理整理文本,高手赐教,谢谢!
楼 主 [求助]批处理整理文本,高手赐教,谢谢! 发表于 2008-09-07 20:03 ·  中国 江西 南昌 电信
中级用户
★★
积分 220
发帖 99
注册 2005-08-16 01:08
UID 41691
状态 离线
我有一聊天记录如下:

===== 2008-09-07 19:10:25 1020 =====

1017, ?

===== End =====

===== 2008-09-07 19:10:30 1020 =====

1017, 1020

===== End =====

===== 2008-09-07 19:11:48 1020 =====

1015, 今天当班啊?

===== End =====

===== 2008-09-07 19:12:11 1015 =====

1020, 我天天当班啊

===== End =====

===== 2008-09-07 19:12:16 1020 =====

1015, 哈哈

===== End =====

===== 2008-09-07 19:12:23 1015 =====

1020, 你一个人上班?

===== End =====

===== 2008-09-07 19:12:23 1020 =====

1015, 小万里?

===== End =====

===== 2008-09-07 19:12:29 1015 =====

1020, 奖励发了吗

===== End =====

===== 2008-09-07 19:12:31 1020 =====

1015, 不是

===== End =====

===== 2008-09-07 19:12:35 1020 =====

1015, 还没哦

===== End =====

===== 2008-09-07 19:12:37 1020 =====

1015, 你呢?

===== End =====

===== 2008-09-07 19:12:40 1015 =====

1020, 你看了啊

===== End =====

===== 2008-09-07 19:12:59 1015 =====

1020, 你估计有多少啊

===== End =====

===== 2008-09-07 19:13:00 1020 =====

1015, 看了什么?

===== End =====

===== 2008-09-07 19:13:07 1020 =====

1015, 不知道哦

===== End =====

===== 2008-09-07 19:13:07 1015 =====

1020, 卡啊

===== End =====

===== 2008-09-07 19:13:15 1020 =====

1015, 你应该不会少的

===== End =====

===== 2008-09-07 19:13:19 1020 =====

1015, 我还没看

===== End =====

===== 2008-09-07 19:13:26 1020 =====

1015, 我前天看了,没有

===== End =====

===== 2008-09-07 19:13:53 1015 =====

1020, 听说的

===== End =====

===== 2008-09-07 19:14:08 1020 =====

1015, 你就到了啊?

===== End =====

===== 2008-09-07 19:14:48 1020 =====

1015, 哦,希望有这么多

===== End =====

===== 2008-09-07 19:14:56 1020 =====

1015, 你几点下班哦

===== End =====

===== 2008-09-07 19:15:09 1015 =====

1020, 我等下就回家了

===== End =====

===== 2008-09-07 19:15:45 1020 =====

1015, 就回去啊

===== End =====

===== 2008-09-07 19:16:07 1015 =====

1020, 是啊,早下班了

===== End =====

===== 2008-09-07 19:18:11 1015 =====

1020, OK

===== End =====

===== 2008-09-07 19:18:15 1015 =====

1020, 886

===== End =====

===== 2008-09-07 19:18:18 1020 =====

1015, 88

===== End =====



想通过批处理整理成如下格式:

小林,?
小林,小张
小李,今天当班啊?
小张,我天天当班啊
小李,哈哈
小张,你一个人上班?
小李,小万里?
小张,奖励发了吗
小李,不是
小李,还没哦
小李,你呢?
小张,你看了啊
小张,你估计有多少啊
小李,看了什么?
小李,不知道哦
小张,卡啊
小李,你应该不会少的
小李,我还没看
小李,我前天看了,没有
小张,听说的
小李,你就到了啊?
小李,哦,希望有这么多
小李,你几点下班哦
小张,我等下就回家了
小李,就回去啊
小张,是啊,早下班了
小张,OK
小张,886
小李,88


1017代表小林 1015代表小李 1020代表小张

我只会简单的批处理,请高手帮忙完善
type imw_1909_17963.txt|find /v "=====">1.txt

批处理要求遍历此文件夹下所有的TXT文件找出聊天记录,谢谢!

文本附件http://www.cn-dos.net/forum/attachment.php?aid=4193&checkid=9b698&download=1

[ Last edited by hbby on 2008-9-7 at 09:48 PM ]
附件
imw_1909_17963.rar (643 bytes, 下载次数: 12)
2 发表于 2008-09-07 20:16 ·  中国 上海 电信
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
UID 99089
性别 男
状态 离线

@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir/b/a-d *.txt') do (
for /f "skip=2 eol== delims=" %%a in ('type %%i') do (
set a=%%a
set a=!a:1015=小李!
set a=!a:1017=小林!
set a=!a:1020=小张!
set a=!a: =!
set a=!a:~,-1!
if not "!a!"=="" echo !a! >>linshi.txt
)
)
pause
至于你想找出所有这样的聊天记录,检查一下这样的文本文件名有没什么规律,比如文件名中都有"聊天"这两个字

[ Last edited by huahua0919 on 2008-9-7 at 10:41 PM ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
pusofalse +7 2008-09-07 20:18
3 发表于 2008-09-07 20:18 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
UID 115804
性别 男
状态 离线
学习,eol==用的太好了!避免使用findstr而降低效率
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
4 发表于 2008-09-07 20:25 ·  中国 江西 南昌 电信
中级用户
★★
积分 220
发帖 99
注册 2005-08-16 01:08
UID 41691
状态 离线
huahua0919,问题还是没解决哦,
1、没有遍历文件夹下所有的TXT文件,
2、没有处理空行,
3、没有处理空格,
劳烦完善下,谢谢
5 发表于 2008-09-07 20:40 ·  中国 上海 电信
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
UID 99089
性别 男
状态 离线
1.你确定你文件夹下面的全是聊天的文件?
2.你要怎么处理空行?
3.空格是不是不要,只要全部连在一起?
6 发表于 2008-09-07 20:42 ·  中国 江西 南昌 电信
中级用户
★★
积分 220
发帖 99
注册 2005-08-16 01:08
UID 41691
状态 离线
1、确定全是聊天文本
2、删除多余的空行
3、删除TAB键生成的空格
4、显示结果保存到文本
谢谢!!
7 发表于 2008-09-07 20:51 ·  中国 上海 电信
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
UID 99089
性别 男
状态 离线
修改过!
8 发表于 2008-09-07 20:59 ·  中国 江西 南昌 电信
中级用户
★★
积分 220
发帖 99
注册 2005-08-16 01:08
UID 41691
状态 离线
我粘贴的文本空格其实是TAB生成的,并不是空格,能否处理?谢谢huahua0919
9 发表于 2008-09-07 21:02 ·  中国 上海 电信
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
UID 99089
性别 男
状态 离线
难道我上面的代码没有处理TAB空格吗?
10 发表于 2008-09-07 21:03 ·  中国 江西 南昌 电信
中级用户
★★
积分 220
发帖 99
注册 2005-08-16 01:08
UID 41691
状态 离线
没有,huahua0919老兄,有QQ吗?我把原始文本给您看看!
11 Re 8楼 发表于 2008-09-07 21:37 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
论坛会把tab处理成空格,所以最好在提问的时候描述清楚,或者干脆用附件的形式贴出来:)
12 发表于 2008-09-07 21:49 ·  中国 江西 南昌 电信
中级用户
★★
积分 220
发帖 99
注册 2005-08-16 01:08
UID 41691
状态 离线
我增加了附件,请HAT看看,谢谢
13 发表于 2008-09-07 21:58 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
set a=!a: =!
set b=!b: =!
请注意2楼的这两句代码,冒号后面是个tab,而不是8个空格,你拷贝2楼的代码以后需要手工修改。
14 发表于 2008-09-07 22:02 ·  中国 江西 南昌 电信
中级用户
★★
积分 220
发帖 99
注册 2005-08-16 01:08
UID 41691
状态 离线
修改了,不行,您下载附件看看
15 发表于 2008-09-07 22:07 ·  中国 江西 南昌 电信
中级用户
★★
积分 220
发帖 99
注册 2005-08-16 01:08
UID 41691
状态 离线
作为菜鸟的我提供一个思路,由于文本本身是ANSI编码的,所以我估计还是先要用FIND命令先过滤下吧!?不对请指正!
论坛跳转: