标题: [求助]批处理整理文本,高手赐教,谢谢!
[打印本页]
作者: hbby
时间: 2008-9-7 20:03
标题: [求助]批处理整理文本,高手赐教,谢谢!
我有一聊天记录如下:
===== 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/atta ... b698&download=1
[
Last edited by hbby on 2008-9-7 at 09:48 PM ]
附件
1:
imw_1909_17963.rar (2008-9-7 21:46, 643 bytes,下载次数: 12)
作者: huahua0919
时间: 2008-9-7 20:16
@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 ]
作者: pusofalse
时间: 2008-9-7 20:18
学习,eol==用的太好了!避免使用findstr而降低效率
作者: hbby
时间: 2008-9-7 20:25
huahua0919,问题还是没解决哦,
1、没有遍历文件夹下所有的TXT文件,
2、没有处理空行,
3、没有处理空格,
劳烦完善下,谢谢
作者: huahua0919
时间: 2008-9-7 20:40
1.你确定你文件夹下面的全是聊天的文件?
2.你要怎么处理空行?
3.空格是不是不要,只要全部连在一起?
作者: hbby
时间: 2008-9-7 20:42
1、确定全是聊天文本
2、删除多余的空行
3、删除TAB键生成的空格
4、显示结果保存到文本
谢谢!!
作者: huahua0919
时间: 2008-9-7 20:51
修改过!
作者: hbby
时间: 2008-9-7 20:59
我粘贴的文本空格其实是TAB生成的,并不是空格,能否处理?谢谢huahua0919
作者: huahua0919
时间: 2008-9-7 21:02
难道我上面的代码没有处理TAB空格吗?
作者: hbby
时间: 2008-9-7 21:03
没有,huahua0919老兄,有QQ吗?我把原始文本给您看看!
作者: HAT
时间: 2008-9-7 21:37
标题: Re 8楼
论坛会把tab处理成空格,所以最好在提问的时候描述清楚,或者干脆用附件的形式贴出来:)
作者: hbby
时间: 2008-9-7 21:49
我增加了附件,请HAT看看,谢谢
作者: HAT
时间: 2008-9-7 21:58
set a=!a: =!
set b=!b: =!
请注意2楼的这两句代码,冒号后面是个tab,而不是8个空格,你拷贝2楼的代码以后需要手工修改。
作者: hbby
时间: 2008-9-7 22:02
修改了,不行,您下载附件看看
作者: hbby
时间: 2008-9-7 22:07
作为菜鸟的我提供一个思路,由于文本本身是ANSI编码的,所以我估计还是先要用FIND命令先过滤下吧!?不对请指正!
作者: hbby
时间: 2008-9-7 22:23
感谢huahua0919大大的正解
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir/b/a-d imw_*.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
)
echo -------------------------------------------------------------------------------------------------->>linshi.txt
)
[
Last edited by hbby on 2008-9-7 at 11:19 PM ]
作者: HAT
时间: 2008-9-7 22:33
@echo off
setlocal enabledelayedexpansion
type nul>"AllChat.log"
for /f "delims=" %%a in ('dir /s /b /a-d *.txt') do (
for /f "usebackq eol== tokens=1*" %%i in ("%%a") do (
if "%%i" neq "" (
if "%%j" neq "" (
set a=%%i
set b=%%j
set a=!a:1015=小李!
set a=!a:1017=小林!
set a=!a:1020=小张!
set a=!a: =!
set b=!b:1015=小李!
set b=!b:1017=小林!
set b=!b:1020=小张!
set b=!b: =!
>>"AllChat.log" echo !a!!b!
)
)
)
>>"AllChat.log" echo -----------------------------------------------------
)
作者: HAT
时间: 2008-9-7 22:35
标题: Re 15楼
ANSI编码的文本文件不需要预处理,unicode编码格式才需要(用type)。
作者: HAT
时间: 2008-9-7 22:36
Quote: |
Originally posted by hbby at 2008-9-7 08:25 PM:
huahua0919,问题还是没解决哦,
1、没有遍历文件夹下所有的TXT文件,2、没有处理空行,
3、没有处理空格,
劳烦完善下,谢谢 |
|
dir命令不加/s开关是无法处理子文件夹下所有的TXT文件的