标题: [文本处理] 批处理如何提取多个TXT文件里的内容然后合并到一个TXT中? [打印本页]
作者: shenhuawd 时间: 2012-8-24 14:36 标题: 批处理如何提取多个TXT文件里的内容然后合并到一个TXT中?
我需要把文本文件:1_1.txt、1_2.txt、1_3.txt、1_4.txt、2_1.txt、2_2.txt、2_3.txt、2_4.txt、3_1.txt、3_2.txt、3_3.txt、3_4.txt.....等等多個文件,這多個文件中的*_1與*_3/*_2與*_4的
內容格式相同,所以我需要批处理一次自动识别提取并合并两个文件(如:1_1.txt&1_2.txt、1_3.txt&1_4.txt、2_1.txt&2_2.txt、2_3.txt&2_4.txt其他以此类推)的内容成为一行,然后再把每一行
输出到一个txt文件中。
1_1.txt中內容格式:
Freq [Hz] dBV Phase [Deg]
10.00 -44.27 75.47
11.28 -45.33 16.17
12.73 -43.46 -50.50
14.35 -42.29 -102.33
16.19 -50.21 -143.11
18.27 -55.83 -101.53
20.61 -46.40 -41.05
23.24 -45.98 -146.29
26.22 -43.00 -18.56
29.58 -48.60 70.93
33.37 -53.21 99.58
37.64 -46.62 -159.39
42.46 -47.06 -156.44
47.89 -48.75 27.54
54.03 -53.78 4.04
60.94 -56.08 -155.08
68.75 -59.07 -7.23
77.55 -63.22 71.68
87.48 -62.34 -33.47
98.69 -63.03 40.58
111.32 -68.19 -166.66
125.58 -66.30 -3.31
141.66 -60.95 -54.71
159.80 -66.39 -158.15
180.26 -67.00 -170.71
203.34 -63.55 -20.50
229.38 -66.41 149.42
258.75 -66.97 -11.93
291.89 -64.52 97.21
329.27 -67.93 -146.89
371.43 -69.75 -160.02
418.99 -67.41 -88.70
472.64 -71.17 -151.13
533.17 -71.02 -74.44
601.44 -71.45 -140.20
678.45 -73.49 124.38
765.33 -70.43 -13.54
863.33 -74.00 166.76
973.89 -73.49 -146.84
1098.59 -74.66 -44.16
1239.27 -71.89 -44.36
1397.96 -74.82 -111.00
1576.98 -76.40 -85.15
1778.91 -75.30 -155.33
2006.70 -74.07 147.74
2263.67 -75.96 -132.78
2553.53 -74.53 -24.01
2880.52 -75.42 -59.99
3249.38 -74.28 171.48
3665.47 -76.71 1.68
4134.84 -75.60 -149.12
4664.31 -75.81 168.47
5261.59 -76.64 41.42
5935.34 -75.27 144.40
6695.38 -73.32 5.08
7552.73 -74.54 -96.38
8519.88 -73.66 -60.62
9610.87 -72.55 100.02
10841.56 -70.34 69.27
12229.84 -66.46 -38.96
13795.90 -69.36 5.51
15562.49 -73.82 152.51
17555.30 -75.47 94.67
19803.29 -77.13 51.26
注:需要提取第二列所有数据,DBV英文除外。
1_2.txt中內容格式:
PRESSURE 74.75 dBSPL
THD 20.348 %
注:需要提取74.75这个数据
然后把以上提取的两组数据合并成一行,需要1_2.txt中提取的內容在1_1.txt中提取的內容前面。然後再是1_3.txt&1_4.txt、2_1.txt&2_2.txt.....兩兩文件的內容合併成一行,
最後把所有合并的行输出到一个TXT中汇总。
希望大神们赐教!
作者: 狗屁不通 时间: 2012-8-24 15:07
看不懂,这什么意思
作者: shenhuawd 时间: 2012-8-24 15:28
回复 2# 狗屁不通
*代表1、2、3、4、5.....因为目录下有多个文件格式分别是:1_1.txt、1_2.txt、1_3.txt、1_4.txt、2_1.txt、2_2.txt、2_3.txt、2_4.txt、3_1.txt、3_2.txt、3_3.txt、3_4.txt....等等
很多个这样的文件,所以我把 _前面的數字用*號來代替說明。就是所有_後面為奇數的文本內容格式相同,_後面所有為偶數的的文本內容格式相同。但合併的時候只能是在1_1.txt和1_2.txt提取內容
合併成一行,1_3.txt、1_4.txt里提取內容合併成一行,2_1.txt和2_2.txt提取內容合併成一行,2_3.txt、2_4.txt里提取內容合併成一行以此類推。
作者: 狗屁不通 时间: 2012-8-24 16:17
回复 3# shenhuawd
我先研究下,不过还是推荐不要繁简混合,别扭
作者: 狗屁不通 时间: 2012-8-24 16:28
回复 3# shenhuawd
怎么个合并法?
1_3.txt、1_4.txt 分行合并吗? 就是第一行单独合并,第二行单独合并……
1_3.txt、1_4.txt 还是不管有多少行,统统变为一行,没有第二行?
作者: apang 时间: 2012-8-25 13:30
本帖最后由 apang 于 2012-8-25 13:56 编辑
效率不是很高。。。- @echo off&setlocal enabledelayedexpansion
- :1
- set/a a+=1,b=0
- if not exist "%a%_*.txt" goto :eof
-
- :2
- set str=&set/a b+=2,c=b-1
- if exist "%a%_%c%.txt" (
- if exist "%a%_%b%.txt" (
- for /f "tokens=1,2" %%a in (%a%_%b%.txt) do (
- if /i "%%a"=="pressure" set "str=%%b"
- )
- for /f "skip=1 tokens=2" %%a in (%a%_%c%.txt) do set "str=!str! %%a"
- echo,!str!>>Result.txt&goto :2
- ) else goto :1
- ) else goto :1
复制代码
作者: shenhuawd 时间: 2012-8-29 17:05
回复 5# 狗屁不通
1_3和1_4的格式與1_1和1_2的格式一樣,展示出來給你看看吧
1_3.txt的內容:
Freq [Hz] dBV Phase [Deg]
10.00 -44.06 -111.80
11.28 -44.31 -74.37
12.73 -47.28 -39.10
14.35 -53.22 -24.33
16.19 -58.64 -2.60
18.27 -60.47 17.32
20.61 -55.96 9.17
23.24 -49.33 -41.91
26.22 -52.33 -163.30
29.58 -56.56 140.70
33.37 -64.32 135.95
37.64 -64.37 -18.18
42.46 -71.25 -10.05
47.89 -50.89 18.24
54.03 -61.28 69.61
60.94 -65.77 -68.32
68.75 -63.81 -35.80
77.55 -67.82 49.37
87.48 -67.42 65.05
98.69 -67.43 147.03
111.32 -71.14 -116.88
125.58 -70.05 47.44
141.66 -63.39 -126.94
159.80 -68.65 119.45
180.26 -68.02 -175.97
203.34 -69.79 -93.30
229.38 -67.33 75.86
258.75 -72.12 130.99
291.89 -68.22 114.26
329.27 -68.97 41.67
371.43 -72.64 33.00
418.99 -70.94 -83.95
472.64 -74.39 -34.89
533.17 -76.79 108.95
601.44 -76.30 163.03
678.45 -75.08 119.20
765.33 -74.03 108.12
863.33 -76.97 -32.54
973.89 -73.35 -175.13
1098.59 -76.79 -168.48
1239.27 -77.83 -148.74
1397.96 -76.25 145.56
1576.98 -76.14 -81.28
1778.91 -79.08 96.31
2006.70 -78.62 -152.83
2263.67 -79.73 175.96
2553.53 -79.06 -90.42
2880.52 -78.95 -106.59
3249.38 -79.12 -109.17
3665.47 -79.39 122.75
4134.84 -79.33 105.91
4664.31 -79.74 -42.67
5261.59 -79.83 -79.44
5935.34 -79.60 -103.30
6695.38 -78.74 9.34
7552.73 -77.27 98.84
8519.88 -78.71 11.08
9610.87 -77.40 -179.88
10841.56 -77.47 71.54
12229.84 -76.34 31.02
13795.90 -78.11 10.55
15562.49 -76.46 -96.76
17555.30 -80.24 161.71
19803.29 -80.46 -18.42
1_4.txt的內容:
PRESSURE 67.12 dBSPL
THD 38.052 %
1.先把1_3的第二列一整列提出來(dbv不能包含),把1_4中的67.12(第一行第二列的數值,1_2所要提取的地方一樣)提取
2.再把提取的數值合併成一行,1_4中所提取的內容在前
3.然後把所有(1_1/1_2/1_3/1_4/2_1/2_2...)提取并合併成行的數值輸出到一個txt文件中顯示
作者: shenhuawd 时间: 2012-8-29 17:12
本帖最后由 shenhuawd 于 2012-8-29 17:16 编辑
回复 6# apang
感謝apang 大神的賜教,期待告訴原理,已經OK了。
Thank you very much for your help!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |