标题: [文本处理] [已解决]求助批处理把多个ASC文件合并,从每个文件的第3行开始 [打印本页]
作者: xueyufei 时间: 2024-3-11 22:10 标题: [已解决]求助批处理把多个ASC文件合并,从每个文件的第3行开始
本帖最后由 xueyufei 于 2024-3-12 11:54 编辑
求助各位大佬~
我要写一个*.bat的代码,实现以下作用:
1、有个多个asc格式的文件(相当于txt),按文件名排序
2、使用 bat代码对多个asc文件进行合并,要求为:
2.1 第一个asc文件,从第一行开始复制
2.2 其余的asc文件,从第三行开始复制
2.3 如果以上两个条件很难同时实现,那就:所有文件都从第三行开始复制
3、合并后的文件,在根目录下,重命名为“合并.asc”
例如:
第一个文件:20-35.asc
------------------
date Sunday Mar 11 20:35:00 2024
base hex timestamps absolute
74099.2804 2 0C0000E4x Rx d 8 71 20 1C 00 FF 00 FF FF
74099.2807 1 00000280x Rx d 8 00 00 15 00 7F 00 37 01
74099.2811 2 0CF00300x Rx d 8 FA FE 00 00 FF FF FF FF
------------------
第二个文件:20-36.asc
------------------
date Sunday Mar 11 20:36:00 2024
base hex timestamps absolute
74159.2757 2 18FED900x Rx d 8 00 00 0C 0F 3F 00 0C 01
74159.2763 1 18F00E00x Rx d 8 00 00 00 00 00 00 00 00
74159.2763 2 18F00A00x Rx d 8 FF FF 00 00 FF FF FF FF
74159.2768 1 00000074x Rx d 8 CE 13 00 00 00 00 00 00
74159.2769 2 18FEDF00x Rx d 8 81 FF FF FF 00 00 00 00
------------------
第三个文件:20-37.asc
------------------
date Sunday Mar 11 20:37:00 2024
base hex timestamps absolute
74219.2712 1 000001B4x Rx d 8 00 00 00 00 00 00 00 00
74219.2718 1 18EB0000x Rx d 8 00 A0 00 00 00 00 00 A8
74219.2724 1 0C41A800x Rx d 8 00 00 00 00 00 00 00 00
74219.2730 1 0C41A804x Rx d 8 00 00 00 00 00 00 00 00
------------------
合并的结果:合并.asc
------------------
date Sunday Mar 11 20:35:00 2024
base hex timestamps absolute
74099.2804 2 0C0000E4x Rx d 8 71 20 1C 00 FF 00 FF FF
74099.2807 1 00000280x Rx d 8 00 00 15 00 7F 00 37 01
74099.2811 2 0CF00300x Rx d 8 FA FE 00 00 FF FF FF FF
74159.2757 2 18FED900x Rx d 8 00 00 0C 0F 3F 00 0C 01
74159.2763 1 18F00E00x Rx d 8 00 00 00 00 00 00 00 00
74159.2763 2 18F00A00x Rx d 8 FF FF 00 00 FF FF FF FF
74159.2768 1 00000074x Rx d 8 CE 13 00 00 00 00 00 00
74159.2769 2 18FEDF00x Rx d 8 81 FF FF FF 00 00 00 00
74219.2712 1 000001B4x Rx d 8 00 00 00 00 00 00 00 00
74219.2718 1 18EB0000x Rx d 8 00 A0 00 00 00 00 00 A8
74219.2724 1 0C41A800x Rx d 8 00 00 00 00 00 00 00 00
74219.2730 1 0C41A804x Rx d 8 00 00 00 00 00 00 00 00
------------------
如果很难实现,就都从第三行开始复制,合并结果
合并的结果:合并.asc
------------------
74099.2804 2 0C0000E4x Rx d 8 71 20 1C 00 FF 00 FF FF
74099.2807 1 00000280x Rx d 8 00 00 15 00 7F 00 37 01
74099.2811 2 0CF00300x Rx d 8 FA FE 00 00 FF FF FF FF
74159.2757 2 18FED900x Rx d 8 00 00 0C 0F 3F 00 0C 01
74159.2763 1 18F00E00x Rx d 8 00 00 00 00 00 00 00 00
74159.2763 2 18F00A00x Rx d 8 FF FF 00 00 FF FF FF FF
74159.2768 1 00000074x Rx d 8 CE 13 00 00 00 00 00 00
74159.2769 2 18FEDF00x Rx d 8 81 FF FF FF 00 00 00 00
74219.2712 1 000001B4x Rx d 8 00 00 00 00 00 00 00 00
74219.2718 1 18EB0000x Rx d 8 00 A0 00 00 00 00 00 A8
74219.2724 1 0C41A800x Rx d 8 00 00 00 00 00 00 00 00
74219.2730 1 0C41A804x Rx d 8 00 00 00 00 00 00 00 00
------------------
补充说明:文件数量很多,每个文件里的行数也很多!
#每分钟一个文件,即一天有60*24=1440个文件
#每个文件,有3-5万行
作者: ShowCode 时间: 2024-3-11 22:24
回复 1# xueyufei
都从第三行开始复制.bat- @echo off
- set "OutFile=Merge.asc"
- cd /d "%~dp0"
- type nul > "%temp%\%OutFile%"
- for /f "delims=" %%i in ('dir /b /a-d *.asc') do (
- echo %%i
- more +2 "%%i" >> "%temp%\%OutFile%"
- )
- move "%temp%\%OutFile%" "%~dp0"
复制代码
作者: hfxiang 时间: 2024-3-12 08:44
回复 1# xueyufei
用第3方工具gawk( http://bcn.bathome.net/tool/4.1.0/gawk.exe )的实现方式如下:- gawk "NR==FNR&&FNR<3;FNR>2" 20*.asc>合并.asc
复制代码
作者: xueyufei 时间: 2024-3-12 11:56
回复 2# ShowCode
太感谢了,测试有效
作者: xueyufei 时间: 2024-3-12 12:08
回复 3# hfxiang
确实很强大,比直接使用bat命令更快。
测试中有个小问题:
1、根据文件名的排序,有些asc文件在gawk.exe软件上面,有些在软件的下面
2、似乎只能合并软件上面的那些文件,下面的文件是合并不了的
同时,合并是按文件名 顺序 排序的,即调整文件夹里的排序方式,是没有用的。
应对的方法是,修改gawk.exe软件的名字,让它排在文件的最下面
总之,非常感谢,解决了我遇到的困难
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |