标题: [文本处理] 批处理怎样合并大批量的文本文件? [打印本页]
作者: necnec1 时间: 2012-4-5 21:47 标题: 批处理怎样合并大批量的文本文件?
公司,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,性质,费用,利率,最后付款期,空行
请会的朋友帮帮忙 谢谢~
作者: gawk 时间: 2012-4-6 13:49
文件行数固定只有11行吗?
作者: necnec1 时间: 2012-4-6 14:04
回楼上的 前4行和倒数后4行是固定的 中间的 01 02 03并不是固定的 有的文本只有01一行 而有的文本从01 02 03 一直到5000都有 一行一行的类推
01
作者: apang 时间: 2012-4-6 19:21
偶滴神,10多万个文件,一想就冒冷汗。。。
作者: lvsehuaxue 时间: 2012-4-9 17:27
- @echo off&setlocal enabledelayedexpansion
- for %%a in (*.txt) do (
- for /f "tokens=1* delims=:" %%i in ('findstr /n .* %%a') do set str=%%i
- for /f "delims=" %%i in (%%a) do (
- set /a n+=1
- set /a n1=!str!-4
- if !n! leq 4 set var=!var!%%i,
- if !n! gtr !n1! set var=!var!%%i,
- )
- set var=!var:~0,-1!
- (for /f "delims=" %%i in (%%a) do (
- set /a m+=1
- if !m! gtr 4 if !m! leq !n1! echo %%i,!var!
- ))>$
- move $ %%a
- set n=
- set m=
- set str=
- set var=
- )
复制代码
作者: apang 时间: 2012-4-9 19:11
本帖最后由 apang 于 2012-4-9 19:29 编辑
- @echo off&setlocal enabledelayedexpansion
- for %%i in (*.txt) do (
- set n=0
- set str=
- for /f "delims=" %%a in ('type "%%i"') do (
- set/a n+=1
- set "A!n!=%%a"
- )
- set/a m1=!n!-3
- set/a m2=!n!-4
- for /l %%a in (1 1 4) do set "str=!str!,!A%%a!"
- for /l %%a in (!m1! 1 !n!) do set "str=!str!,!A%%a!"
- (for /l %%a in (5 1 !m2!) do (
- echo;!A%%a!!str!
- ))>"%%i"
- )
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |