标题: [文本处理] 批处理按行合并多个二进制文件 [打印本页]
作者: zhua1987 时间: 2011-4-12 22:14 标题: 批处理按行合并多个二进制文件
问题:
文件夹H:\test下有500个二进制文件(名字均不规则),用编辑器打开,内容格式如下:
34.all 文件:
res:1,2,3,
CQR:m,n,_,
WIM:w,w,w,
21.all 文件:
res:4,5,6,
CQR:q,_,s,
WIM:r,r,r,
对这500个文件逐行合并,生成文件如下:
res:1,2,3,res:4,5,6,
CQR:m,n,_,CQR:q,_,s,
WIM:w,w,w,WIM:r,r,r,
如果可以合并成这样:
res:1,2,3,4,5,6,
CQR:m,n,_,q,_,s,
WIM:w,w,w,r,r,r,
就更好了,非常感谢!!
作者: zhua1987 时间: 2011-4-12 22:24
跪求解答~~
作者: CrLf 时间: 2011-4-12 22:36
如果行数多,而且每个文件末都有回车,可以这样:- @echo off
- for %%a in (h:\test\*.all) do (
- for /f "useback tokens=1* delims=:" %%b in ('findstr /n .* "%%a"') do (
- set /p=%%c<nul>%%b.tmp
- )
- echo;
- )
- copy /b *.tmp h:\test\合并.all
- del /f /q *.tmp
复制代码
如果文件行数少,而且文件末均有回车符,可以这样:- @echo off
- findstr /n .* h:\test\*.all>tmp
- (for /l %%a in (0 1 100) do (
- for /f "tokens=2* delims=:" %%b in ('findsr "^[^:]:%%a:" tmp') do set /p=%%c<nul)>h:\test\合并.all
- echo;
- )
复制代码
如果文件短,并且不确定是否以回车结尾,可以这样:- @echo off&setlocal enabledelayedexpansion
- for %%a in (h:\test\*.all) do (
- if "!m!" lss "!n!" set m=n
- set n=
- for /f "delims=" %%b in ("%%a") do (
- set /a n+=1
- for %%z in (@!n!) do set @!n!=!%%z!%%b
- )
- )
- (for /l %%a in (1 1 %m%) do echo;!@%%a!)>h:\test\合并.all
复制代码
以上均为思路,并未实战测试
作者: broly 时间: 2011-4-12 23:12
二进制文件?然后用编辑器打开是文本?
作者: caruko 时间: 2011-4-12 23:56
二进制文件? 只怕批处理无能为力。
如果只是简单的 合并,copy /b f1+f2+f3 fnew
作者: zhua1987 时间: 2011-4-12 23:59
4# broly
恩,用记事本打开会有一些黑色方块;用写字板或EditPlus等打开才能正常显示
作者: zhua1987 时间: 2011-4-13 00:05
3# zm900612
没想到这么快就有回复,还是非常感谢的!!
三种方法我都试过了,还是不行
期待您的改进,再次感谢!!
P.S.每个文件内容都是8行,列数不定,最多有上百列,但同一文件中每行的列数都相同
作者: hanyeguxing 时间: 2011-4-13 07:13
1,不要跪求,没人能受得起
2,最好上传一个文件做示例
作者: techon 时间: 2011-4-13 14:33
批处理处理二进制文件 有难度 恐怕要第三方程序了
作者: broly 时间: 2011-4-13 15:08
发一下样本。。。我有空用VBS或者C试试
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |