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

[文本处理] 批处理怎样合并大批量的文本文件?

公司,J,否
2012-04-30,,000000,EC12040072
任月,崔宁,2012-04-04
用户,发票
01,AB01,8--15,,009968,后移
02,AB02,8--20,,009978,后移
03,AB02,8--05,,009920,后移
50
性质,费用
利率,最后付款期
空行


我有10多万个文本文件  每个文本文件大致如上   文本为GB2312

前4行合并成一行  倒数后4行合并成一行   然后把2组合并的行 依次添加到01 02 03内容的后面    行与行合并请用逗号分隔

请注意 前4行和倒数4行 行数固定   中间的 01 02 03并不是固定的   有的文本只有01一行  而有的文本从01 02 03  一直到5000都有
最后的结果如下
01,AB01,8--15,,009968,后移,公司,J,否,2012-04-30,,000000,EC12040072,任月,崔宁,2012-04-04,用户,发票,50,性质,费用,利率,最后付款期,空行
02,AB02,8--20,,009978,后移,公司,J,否,2012-04-30,,000000,EC12040072,任月,崔宁,2012-04-04,用户,发票,50,性质,费用,利率,最后付款期,空行
03,AB02,8--05,,009920,后移,公司,J,否,2012-04-30,,000000,EC12040072,任月,崔宁,2012-04-04,用户,发票,50,性质,费用,利率,最后付款期,空行

请会的朋友帮帮忙 谢谢~

文件行数固定只有11行吗?

TOP

回楼上的  前4行和倒数后4行是固定的   中间的 01 02 03并不是固定的   有的文本只有01一行  而有的文本从01 02 03  一直到5000都有 一行一行的类推
01

TOP

偶滴神,10多万个文件,一想就冒冷汗。。。

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for %%a in (*.txt) do (
  3.    for /f "tokens=1* delims=:" %%i in ('findstr /n .* %%a') do set str=%%i
  4.    for /f "delims=" %%i in (%%a) do (
  5.       set /a n+=1
  6.       set /a n1=!str!-4
  7.       if !n! leq 4 set var=!var!%%i,
  8.       if !n! gtr !n1! set var=!var!%%i,
  9.    )   
  10.    set var=!var:~0,-1!
  11.    (for /f "delims=" %%i in (%%a) do (
  12.    set /a m+=1
  13.    if !m! gtr 4 if !m! leq !n1! echo %%i,!var!
  14.    ))>$
  15.    move $ %%a
  16.    set n=
  17.    set m=
  18.    set str=
  19.    set var=
  20. )
复制代码

TOP

本帖最后由 apang 于 2012-4-9 19:29 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%i in (*.txt) do (
  3.   set n=0
  4.   set str=
  5.   for /f "delims=" %%a in ('type "%%i"') do (
  6.     set/a n+=1
  7.     set "A!n!=%%a"
  8.   )
  9.   set/a m1=!n!-3
  10.   set/a m2=!n!-4
  11.   for /l %%a in (1 1 4) do set "str=!str!,!A%%a!"
  12.   for /l %%a in (!m1! 1 !n!) do set "str=!str!,!A%%a!"
  13.   (for /l %%a in (5 1 !m2!) do (
  14.      echo;!A%%a!!str!
  15.   ))>"%%i"
  16. )
复制代码

TOP

返回列表