[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理怎么把单词后的数字多行改成一行并去掉日期?

本帖最后由 会飞吗 于 2011-4-18 09:08 编辑

现有一个文本文件 .txt格式 如下所示

[29-05-2009 10:45:15]: Active protocol T1
[29-05-2009 10:45:15]: ATR:
[29-05-2009 10:45:15]: 3B F7 11 00 00 81 71 FE 42 00 00 63 95 01 01 90
[29-05-2009 10:45:15]: 00 CC
[29-05-2009 10:45:15]: Command:
[29-05-2009 10:45:15]: 00 A4 04 00 08 A0 00 00 01 72 95 00 01 00
[29-05-2009 10:45:15]: Response:
[29-05-2009 10:45:15]: 6F 13 84 08 A0 00 00 01 72 95 00 01 A5 07 5F 2D
[29-05-2009 10:45:15]: 04 7A 68 65 6E 90 00
[29-05-2009 10:45:15]: Command:
[29-05-2009 10:45:15]: 00 A4 02 00 02 10 80
[29-05-2009 10:45:15]: Response:
[29-05-2009 10:45:15]: 90 00
[29-05-2009 10:45:15]: Command:
[29-05-2009 10:45:15]: 00 B2 01 04 00
[29-05-2009 10:45:15]: Response:
[29-05-2009 10:45:15]: 01 6E 08 30 30 30 30 30 33 35 38 1C 32 35 30 30
[29-05-2009 10:45:15]: 31 30 30 30 30 30 30 31 30 31 30 32 30 33 30 34
[29-05-2009 10:45:15]: 30 35 30 36 30 37 30 38 00 08 3F 05 73 DF 69 CF
[29-05-2009 10:45:15]: 42 BE 90 00
[29-05-2009 10:45:15]: Command:
[29-05-2009 10:45:15]: 00 A4 02 00 02 10 01
[29-05-2009 10:45:15]: Response:
[29-05-2009 10:45:15]: 90 00
[29-05-2009 10:45:15]: Command:
[29-05-2009 10:45:15]: 00 B2 01 05 00
[29-05-2009 10:45:15]: Response:
[29-05-2009 10:45:15]: 01 08 38 30 38 30 30 30 30 30 02 1E 01 02 03 04
[29-05-2009 10:45:15]: 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
[29-05-2009 10:45:15]: 21 22 23 24 25 26 27 28 29 30 03 10 30 31 30 32
[29-05-2009 10:45:15]: 30 33 30 34 30 35 30 36 30 37 30 38 04 10 31 31
[29-05-2009 10:45:15]: 31 31 31 31 31 31 31 31 31 31 31 31 31 31 05 10
[29-05-2009 10:45:15]: 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
[29-05-2009 10:45:15]: 06 10 33 33 33 33 33 33 33 33 33 33 33 33 33 33
[29-05-2009 10:45:15]: 33 33 07 10 30 30 30 30 30 30 30 30 30 30 30 30
[29-05-2009 10:45:15]: 30 30 30 30 08 10 20 20 20 20 20 20 20 20 20 20
[29-05-2009 10:45:15]: 20 20 20 20 20 20 09 10 37 37 37 37 37 37 37 37
[29-05-2009 10:45:15]: 37 37 37 37 37 37 20 20 0A 10 31 32 33 34 35 36
[29-05-2009 10:45:15]: 37 38 39 30 31 32 33 34 35 36 90 00
[29-05-2009 10:45:31]: Connection Time: 0.578 second(s)
[29-05-2009 10:45:31]: APDU Execution Time: 16.093 second(s)

希望可以把前 1. 前四行 和 最后两行去掉 就是只留下  Command: 和 Response: 的部分
             2. 把前面的 [29-05-2009 10:45:31]:  都去掉 注意 括号内的时间日期数字不是固定的。
             3. 把Response 为多行的部分 改为一行 把回车都去掉
改完后的结果如下:

00 A4 04 00 08 A0 00 00 01 72 95 00 01 00
6F 13 84 08 A0 00 00 01 72 95 00 01 A5 07 5F 2D 04 7A 68 65 6E 90 00

00 A4 02 00 02 10 80
90 00

00 B2 01 04 00
01 6E 08 30 30 30 30 30 33 35 38 1C 32 35 30 30 31 30 30 30 30 30 30 31 30 31 30 32 30 33 30 34 30 35 30 36 30 37 30 38 00 08 3F 05 73 DF 69 CF 42 BE 90 00

00 A4 02 00 02 10 01
90 00

00 B2 01 05 00
01 08 38 30 38 30 30 30 30 30 02 1E 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 03 10 30 31 30 32 30 33 30 34 30 35 30 36 30 37 30 38 04 10 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 05 10 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 06 10 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 07 10 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 08 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 09 10 37 37 37 37 37 37 37 37 37 37 37 37 37 37 20 20 0A 10 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 90 00

注意1  每个 Command: 和 Response:  为一组 每组之间用空行隔开   Command: 和 Response:   组数不定
注意2  Command 也有多行的情况发生。

有没有高手能够帮忙写个批处理啊, 小弟这边有几个文件 有30M 文本文件30M 如果手改的话 基本改吐血是必须的了。 跪求高手帮我解决这个问题。
在这里先谢过了。

小弟已经改了标题
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

冰天雪地 ,零下50度 裸跪行走 5公里 求高手帮忙解决。 小弟这里 感激不尽!

TOP

标题模糊,我就暂不关你的贴,赶快修改!

ps:这个文本处理没有难度,只是批来处理30m的文件,速度。。。
***共同提高***

TOP

3# batman


谢谢版主手下留情。小弟由于刚来论坛还不熟悉 咱论坛的规矩。
恳请帮小弟解决一下, 能处理小一点的也行 目前小弟这里有2百多个 几百K的文件 ,上10M的大约10个左右。

TOP

本帖最后由 hanyeguxing 于 2011-4-15 18:02 编辑
  1. @echo off&setlocal enableDelayedExpansion
  2. for %%z in (*.txt) do (
  3.     (for /f "usebackq skip=4 tokens=2*" %%a in ("%%z") do (
  4.         set "b=%%b"
  5.         if /i "%%b"=="Command: " if defined a set a=&echo;&echo;
  6.         if /i "%%b"=="Response: " set a==
  7.         if "!b:~2,1!"==" " if defined a (set/p"=%%b"<nul) else echo;%%b
  8.     ))>$
  9.     move $ "%%z"
  10. )
复制代码
注意:
1,代码需要经过测试符合要求后再批量使用
2,"Command: "和"Response: " 必须与原文一致,特别要注意是否有空格
3,使用前推荐先备份原文件
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

5# hanyeguxing

版主 您好,非常感谢您的帮忙,怪我这个例子不太好 我的文件里面 Command:  也会有多行的情况发生。
我上传一下 需要处理的文件您帮看一下


[29-05-2009 10:45:15]: Active protocol T1
[29-05-2009 10:45:15]: ATR:
[29-05-2009 10:45:15]: 3B F7 11 00 00 81 71 FE 42 00 00 63 95 01 01 90
[29-05-2009 10:45:15]: 00 CC
[29-05-2009 10:45:15]: Command:
[29-05-2009 10:45:15]: 00 A4 04 00 08 A0 00 00 01 72 95 00 01 00
[29-05-2009 10:45:15]: Response:
[29-05-2009 10:45:15]: 6F 13 84 08 A0 00 00 01 72 95 00 01 A5 07 5F 2D
[29-05-2009 10:45:15]: 04 7A 68 65 6E 90 00
[29-05-2009 10:45:15]: Command:
[29-05-2009 10:45:15]: 00 A4 02 00 02 10 80
[29-05-2009 10:45:15]: Response:
[29-05-2009 10:45:15]: 90 00
[29-05-2009 10:45:15]: Command:
[29-05-2009 10:45:15]: 00 B2 01 04 00
[29-05-2009 10:45:15]: Response:
[29-05-2009 10:45:15]: 01 6E 08 30 30 30 30 30 33 35 38 1C 32 35 30 30
[29-05-2009 10:45:15]: 31 30 30 30 30 30 30 31 30 31 30 32 30 33 30 34
[29-05-2009 10:45:15]: 30 35 30 36 30 37 30 38 00 08 3F 05 73 DF 69 CF
[29-05-2009 10:45:15]: 42 BE 90 00
[29-05-2009 10:45:15]: Command:
[29-05-2009 10:45:15]: 00 A4 02 00 02 10 01
[29-05-2009 10:45:15]: Response:
[29-05-2009 10:45:15]: 90 00
[29-05-2009 10:45:15]: Command:
[29-05-2009 10:45:15]: 00 B2 01 05 00
[29-05-2009 10:45:15]: Response:
[29-05-2009 10:45:15]: 01 08 38 30 38 30 30 30 30 30 02 1E 01 02 03 04
[29-05-2009 10:45:15]: 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
[29-05-2009 10:45:15]: 21 22 23 24 25 26 27 28 29 30 03 10 30 31 30 32
[29-05-2009 10:45:15]: 30 33 30 34 30 35 30 36 30 37 30 38 04 10 31 31
[29-05-2009 10:45:15]: 31 31 31 31 31 31 31 31 31 31 31 31 31 31 05 10
[29-05-2009 10:45:15]: 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
[29-05-2009 10:45:15]: 06 10 33 33 33 33 33 33 33 33 33 33 33 33 33 33
[29-05-2009 10:45:15]: 33 33 07 10 30 30 30 30 30 30 30 30 30 30 30 30
[29-05-2009 10:45:15]: 30 30 30 30 08 10 20 20 20 20 20 20 20 20 20 20
[29-05-2009 10:45:15]: 20 20 20 20 20 20 09 10 37 37 37 37 37 37 37 37
[29-05-2009 10:45:15]: 37 37 37 37 37 37 20 20 0A 10 31 32 33 34 35 36
[29-05-2009 10:45:15]: 37 38 39 30 31 32 33 34 35 36 90 00
[29-05-2009 10:45:15]: Command:
[29-05-2009 10:45:15]: 00 A4 02 00 02 10 02
[29-05-2009 10:45:15]: Response:
[29-05-2009 10:45:15]: 90 00
[29-05-2009 10:45:15]: Command:
[29-05-2009 10:45:15]: 00 B2 01 05 00
[29-05-2009 10:45:15]: Response:
[29-05-2009 10:45:15]: 01 18 38 36 31 30 30 30 30 30 31 31 31 31 31 31
[29-05-2009 10:45:15]: 31 31 31 31 31 31 31 31 31 31 02 18 38 36 32 30
[29-05-2009 10:45:15]: 30 30 30 30 32 32 32 32 32 32 32 32 32 32 32 32
[29-05-2009 10:45:15]: 32 32 32 32 03 18 38 36 33 30 30 30 30 30 33 33
[29-05-2009 10:45:15]: 33 33 33 33 33 33 33 33 33 33 33 33 33 33 04 18
[29-05-2009 10:45:15]: 38 36 34 30 30 30 30 30 30 30 30 30 30 30 30 30
[29-05-2009 10:45:15]: 30 30 30 30 30 30 30 30 05 18 38 36 35 30 30 30
[29-05-2009 10:45:15]: 30 30 20 20 20 20 20 20 20 20 20 20 20 20 20 20
[29-05-2009 10:45:15]: 20 20 06 18 38 36 36 30 30 30 30 30 37 37 37 37
[29-05-2009 10:45:15]: 37 37 37 37 37 37 37 37 37 37 20 20 07 18 38 36
[29-05-2009 10:45:15]: 37 30 30 30 30 30 31 32 33 34 35 36 37 38 39 30
[29-05-2009 10:45:15]: 31 32 33 34 35 36 08 18 38 36 38 30 30 30 30 30
[29-05-2009 10:45:15]: 30 31 30 32 30 33 30 34 30 35 30 36 30 37 30 38
[29-05-2009 10:45:15]: 90 00
[29-05-2009 10:45:15]: Command:
[29-05-2009 10:45:15]: 00 EA 10 80 50 32 35 32 31 30 30 30 30 30 30 30
[29-05-2009 10:45:15]: 30 35 30 30 30 30 30 38 36 31 30 30 30 30 31 31
[29-05-2009 10:45:15]: 30 30 30 30 30 30 32 32 30 30 38 30 35 30 31 31
[29-05-2009 10:45:15]: 32 33 30 30 30 32 32 32 32 32 32 32 32 32 32 32
[29-05-2009 10:45:15]: 32 32 32 32 32 30 31 30 32 30 33 30 34 30 35 30
[29-05-2009 10:45:15]: 36 30 37 30 38 00
[29-05-2009 10:45:31]: Response:
[29-05-2009 10:45:31]: 69 F0
[29-05-2009 10:45:31]: Command:
[29-05-2009 10:45:31]: 00 A4 02 00 02 10 80
[29-05-2009 10:45:31]: Response:
[29-05-2009 10:45:31]: 90 00
[29-05-2009 10:45:31]: Command:
[29-05-2009 10:45:31]: 00 B2 01 04 00
[29-05-2009 10:45:31]: Response:
[29-05-2009 10:45:31]: 01 6E 08 30 30 30 30 30 33 35 38 1C 32 35 30 30
[29-05-2009 10:45:31]: 31 30 30 30 30 30 30 31 30 31 30 32 30 33 30 34
[29-05-2009 10:45:31]: 30 35 30 36 30 37 30 38 00 08 3F 05 73 DF 69 CF
[29-05-2009 10:45:31]: 42 BE 90 00
[29-05-2009 10:45:31]: Connection Time: 0.578 second(s)
[29-05-2009 10:45:31]: APDU Execution Time: 16.093 second(s)

修改完成的样子

00 A4 04 00 08 A0 00 00 01 72 95 00 01 00
6F 13 84 08 A0 00 00 01 72 95 00 01 A5 07 5F 2D 04 7A 68 65 6E 90 00

00 A4 02 00 02 10 80
90 00

00 B2 01 04 00
01 6E 08 30 30 30 30 30 33 35 38 1C 32 35 30 30 31 30 30 30 30 30 30 31 30 31 30 32 30 33 30 34 30 35 30 36 30 37 30 38 00 08 3F 05 73 DF 69 CF 42 BE 90 00

00 A4 02 00 02 10 01
90 00

00 B2 01 05 00
01 08 38 30 38 30 30 30 30 30 02 1E 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 03 10 30 31 30 32 30 33 30 34 30 35 30 36 30 37 30 38 04 10 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 05 10 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 06 10 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 07 10 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 08 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 09 10 37 37 37 37 37 37 37 37 37 37 37 37 37 37 20 20 0A 10 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 90 00

00 A4 02 00 02 10 02
90 00

00 B2 01 05 00
01 18 38 36 31 30 30 30 30 30 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 02 18 38 36 32 30 30 30 30 30 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 03 18 38 36 33 30 30 30 30 30 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 04 18 38 36 34 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 05 18 38 36 35 30 30 30 30 30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 06 18 38 36 36 30 30 30 30 30 37 37 37 37 37 37 37 37 37 37 37 37 37 37 20 20 07 18 38 36 37 30 30 30 30 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 08 18 38 36 38 30 30 30 30 30 30 31 30 32 30 33 30 34 30 35 30 36 30 37 30 38 90 00

00 EA 10 80 50 32 35 32 31 30 30 30 30 30 30 30 30 35 30 30 30 30 30 38 36 31 30 30 30 30 31 31 30 30 30 30 30 30 32 32 30 30 38 30 35 30 31 31 32 33 30 30 30 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 30 31 30 32 30 33 30 34 30 35 30 36 30 37 30 38 00
69 F0

00 A4 02 00 02 10 80
90 00

00 B2 01 04 00
01 6E 08 30 30 30 30 30 33 35 38 1C 32 35 30 30 31 30 30 30 30 30 30 31 30 31 30 32 30 33 30 34 30 35 30 36 30 37 30 38 00 08 3F 05 73 DF 69 CF 42 BE 90 00


注意下面有个 Command:  也是 多行的 需要改成单行   

看来我这次是有救了, 批处理原来博大精深,平时我也要学习一下了, 再次感谢咱们这个论坛!!!

TOP

本帖最后由 hanyeguxing 于 2011-4-15 19:47 编辑

批处理运行要求同5楼
  1. @echo off&setlocal enableDelayedExpansion
  2. for %%z in (*.txt) do (
  3.     (for /f "usebackq skip=4 tokens=2*" %%a in ("%%z") do (
  4.         if /i "%%b"=="Command: " if defined b echo;&echo;
  5.         if /i "%%b"=="Response: " echo;
  6.         set "b=%%b"
  7.         if "!b:~2,1!"==" " set/p"=%%b"<nul
  8.     ))>$
  9.     move $ "%%z"
  10. )
复制代码
1

评分人数

寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

本帖最后由 asnahu 于 2011-4-15 20:48 编辑
  1. sed "s/^\[.*\]:\s//; 1,4d; /Connection\|APDU/d" com | sed "/^.\{2\}\s/{:a /:/!N; s/\n//; ta;}; s/\sCommand:\s/\n/; s/\sResponse:\s//; s/^Command:\s$//"
复制代码
1

评分人数

TOP

太感谢 楼上的朋友们了, 今天上午用批处理搞了一下,哈哈哈哈哈哈 两个小时 全部搞定!!! 我也要开始学批处理啦!! 以后大家多多关照啊! 再次感谢 版主 和 asnahu !

TOP

返回列表