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

[文本处理] 批处理按行合并多个二进制文件

问题:
文件夹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,

就更好了,非常感谢!!

跪求解答~~

TOP

如果行数多,而且每个文件末都有回车,可以这样:
  1. @echo off
  2. for %%a in (h:\test\*.all) do (
  3.    for /f "useback tokens=1* delims=:" %%b in ('findstr /n .* "%%a"') do (
  4.       set /p=%%c<nul>%%b.tmp
  5.    )
  6.    echo;
  7. )
  8. copy /b *.tmp h:\test\合并.all
  9. del /f /q *.tmp
复制代码
如果文件行数少,而且文件末均有回车符,可以这样:
  1. @echo off
  2. findstr /n .* h:\test\*.all>tmp
  3. (for /l %%a in (0 1 100) do (
  4.    for /f "tokens=2* delims=:" %%b in ('findsr "^[^:]:%%a:" tmp') do set /p=%%c<nul)>h:\test\合并.all
  5.    echo;
  6. )
复制代码
如果文件短,并且不确定是否以回车结尾,可以这样:
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%a in (h:\test\*.all) do (
  3.    if "!m!" lss "!n!" set m=n
  4.    set n=
  5.    for /f "delims=" %%b in ("%%a") do (
  6.       set /a n+=1
  7.       for %%z in (@!n!) do set @!n!=!%%z!%%b
  8.       )
  9.    )
  10. (for /l %%a in (1 1 %m%) do echo;!@%%a!)>h:\test\合并.all
复制代码
以上均为思路,并未实战测试

TOP

二进制文件?然后用编辑器打开是文本?
---学无止境---

TOP

二进制文件? 只怕批处理无能为力。
如果只是简单的 合并,copy /b f1+f2+f3 fnew

TOP

4# broly
恩,用记事本打开会有一些黑色方块;用写字板或EditPlus等打开才能正常显示

TOP

3# zm900612
没想到这么快就有回复,还是非常感谢的!!
三种方法我都试过了,还是不行
期待您的改进,再次感谢!!

P.S.每个文件内容都是8行,列数不定,最多有上百列,但同一文件中每行的列数都相同

TOP

1,不要跪求,没人能受得起
2,最好上传一个文件做示例
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

批处理处理二进制文件 有难度 恐怕要第三方程序了

TOP

发一下样本。。。我有空用VBS或者C试试
---学无止境---

TOP

返回列表