标题: [文本处理] [已解决]批处理如何合并指定序号的文本数据,并在每行数据前加上指定字符? [打印本页]
作者: 思想之翼 时间: 2012-7-3 02:21 标题: [已解决]批处理如何合并指定序号的文本数据,并在每行数据前加上指定字符?
有63个txt文本,序号为01至63,每个文本里只有一行0-9的数据,数字间没有空格,现在需要将63个txt文本分为3组,分别合并成3个txt文本。其中:
序号为01、02、03、04、05、07、08、09、10、12、13、14、16、17、19、22、23、24、25、26、28、29、30、31、33、34、35、37、38、40、43、44、45、46、47、49、50、51、52、54、55、56、58、59、61 的txt文本(45个)合并为一个txt文本,批处理后新建txt文本,命名为123456。
序号为07、08、09、10、11、12、13、14、15、16、17、18、19、20、21、28、29、30、31、32、33、34、35、36、37、38、39、40、41、42、49、50、51、52、53、54、55、56、57、58、59、60、61、62、63 的txt文本(45个)合并为一个txt文本,批处理后新建txt文本,命名为234567。
序号为06、27、48 这3个txt文本合并为一个txt文本,批处理后新建txt文本,命名为17。
另外,在合并后的前2个文本里,每行前依次加上如下字符:
1+2=
1+3=
1+4=
1+5=
1+6=
2+3=
2+4=
2+5=
2+6=
3+4=
3+5=
3+6=
4+5=
4+6=
5+6=
1-2=
1-3=
1-4=
1-5=
1-6=
2-3=
2-4=
2-5=
2-6=
3-4=
3-5=
3-6=
4-5=
4-6=
5-6=
1*2=
1*3=
1*4=
1*5=
1*6=
2*3=
2*4=
2*5=
2*6=
3*4=
3*5=
3*6=
4*5=
4*6=
5*6=
在合并后的c组txt文本里,每行依次加上这样的字符:
1+2=
1-2=
1*2=
拿c组举例:合并前
06序号的txt文本:123456
27序号的txt文本:569
48序号的txt文本:06789
合并后 命名为17的txt文本:
1+2=123456
1-2=569
1*2=06789
真诚希望热心的大师们出手相助。
作者: yangfengoo 时间: 2012-7-3 09:45
是不是每个txt只有一行?
作者: 思想之翼 时间: 2012-7-3 09:47
是的,每个txt只有一行。谢谢关注!
作者: yangfengoo 时间: 2012-7-3 11:09
- @echo off&setlocal enabledelayedexpansion
- for /f %%a in ('more +18 %~0') do set/a n+=1&set _!n!=%%a
- set #=01 02 03 04 05 07 08 09 10 12 13 14 16 17 19 22 23 24 25 26 28 29 30 31 33 34 35 37 38 40 43 44 45 46 47 49 50 51 52 54 55 56 58 59 61
- call :lp 0 123456
- set #=07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
- call :lp 0 234567
- set #=06 27 48
- call :lp 45 17
- goto :eof
- :lp
- set nn=%1
- (for %%a in (!#!) do (
- set _=
- set/p _=<%%a.txt
- set/a nn+=1
- call echo,%%_!nn!%%!_!
- ))>%2.txt
- goto :eof
- 1+2=
- 1+3=
- 1+4=
- 1+5=
- 1+6=
- 2+3=
- 2+4=
- 2+5=
- 2+6=
- 3+4=
- 3+5=
- 3+6=
- 4+5=
- 4+6=
- 5+6=
- 1-2=
- 1-3=
- 1-4=
- 1-5=
- 1-6=
- 2-3=
- 2-4=
- 2-5=
- 2-6=
- 3-4=
- 3-5=
- 3-6=
- 4-5=
- 4-6=
- 5-6=
- 1*2=
- 1*3=
- 1*4=
- 1*5=
- 1*6=
- 2*3=
- 2*4=
- 2*5=
- 2*6=
- 3*4=
- 3*5=
- 3*6=
- 4*5=
- 4*6=
- 5*6=
- 1+2=
- 1-2=
- 1*2=
复制代码
作者: 思想之翼 时间: 2012-7-3 12:13
非常感谢!完美解决问题。速度也快。
由于我自己的不严谨,批处理产生的123456,234567,17这三个文本,其中命名为17的文本覆盖了原先存在的17文本,是否可以新建一个文件夹,将批处理产生的123456,234567,17这三个文本放入其中?
再次感谢!
作者: yangfengoo 时间: 2012-7-3 13:01
- @echo off&setlocal enabledelayedexpansion
- md new
- for /f %%a in ('more +19 %~0') do set/a n+=1&set _!n!=%%a
- set #=01 02 03 04 05 07 08 09 10 12 13 14 16 17 19 22 23 24 25 26 28 29 30 31 33 34 35 37 38 40 43 44 45 46 47 49 50 51 52 54 55 56 58 59 61
- call :lp 0 123456
- set #=07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
- call :lp 0 234567
- set #=06 27 48
- call :lp 45 17
- goto :eof
- :lp
- set nn=%1
- (for %%a in (!#!) do (
- set _=
- set/p _=<%%a.txt
- set/a nn+=1
- call echo,%%_!nn!%%!_!
- ))>new\%2.txt
- goto :eof
- 1+2=
- 1+3=
- 1+4=
- 1+5=
- 1+6=
- 2+3=
- 2+4=
- 2+5=
- 2+6=
- 3+4=
- 3+5=
- 3+6=
- 4+5=
- 4+6=
- 5+6=
- 1-2=
- 1-3=
- 1-4=
- 1-5=
- 1-6=
- 2-3=
- 2-4=
- 2-5=
- 2-6=
- 3-4=
- 3-5=
- 3-6=
- 4-5=
- 4-6=
- 5-6=
- 1*2=
- 1*3=
- 1*4=
- 1*5=
- 1*6=
- 2*3=
- 2*4=
- 2*5=
- 2*6=
- 3*4=
- 3*5=
- 3*6=
- 4*5=
- 4*6=
- 5*6=
- 1+2=
- 1-2=
- 1*2=
复制代码
作者: apang 时间: 2012-7-3 14:39
本帖最后由 apang 于 2012-7-3 14:55 编辑
- @echo off
- set str1=01 02 03 04 05 07 08 09 10 12 13 14 16 17 19 22 23 24 25 26 28 29 30 31 33 34 35 37 38 40 43 44 45 46 47 49 50 51 52 54 55 56 58 59 61
- set str2=07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
- set str3=06 27 48
- for /l %%a in (1 1 3) do (
- if "%%a"=="3" (set v=2) else set v=6
- setlocal enabledelayedexpansion
- call :11 + - *
- (for %%b in (!str%%a!) do (
- for /f "delims=" %%c in (%%b.txt) do set/a m+=1&call echo %%.!m!%%=%%c
- ))>%%a.txt
- endlocal
- )
- md new 2>nul
- move 1.txt new\123456.txt
- move 2.txt new\234567.txt
- move 3.txt new\17.txt
- goto :eof
-
- :11
- for /l %%a in (1 1 !v!) do (
- for /l %%b in (%%a 1 !v!) do (
- if not %%b equ %%a set/a n+=1&set .!n!=%%a%1%%b
- )
- )
- if not "%~2"=="" shift&goto 11
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |