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

[文本处理] 批处理如何提取多个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中汇总。
希望大神们赐教!

*_1與*_3/*_2與*_4的

看不懂,这什么意思

TOP

回复 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里提取內容合併成一行以此類推。

TOP

回复 3# shenhuawd


    我先研究下,不过还是推荐不要繁简混合,别扭

TOP

回复 3# shenhuawd


    怎么个合并法?
1_3.txt、1_4.txt 分行合并吗? 就是第一行单独合并,第二行单独合并……
1_3.txt、1_4.txt 还是不管有多少行,统统变为一行,没有第二行?

TOP

本帖最后由 apang 于 2012-8-25 13:56 编辑

效率不是很高。。。
  1. @echo off&setlocal enabledelayedexpansion
  2. :1
  3. set/a a+=1,b=0
  4. if not exist "%a%_*.txt" goto :eof
  5. :2
  6. set str=&set/a b+=2,c=b-1
  7. if exist "%a%_%c%.txt" (
  8.   if exist "%a%_%b%.txt" (
  9.     for /f "tokens=1,2" %%a in (%a%_%b%.txt) do (
  10.       if /i "%%a"=="pressure" set "str=%%b"
  11.     )
  12.     for /f "skip=1 tokens=2" %%a in (%a%_%c%.txt) do  set "str=!str! %%a"
  13.     echo,!str!>>Result.txt&goto :2
  14.   ) else goto :1
  15. ) else goto :1
复制代码

TOP

回复 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文件中顯示

TOP

本帖最后由 shenhuawd 于 2012-8-29 17:16 编辑

回复 6# apang


    感謝apang 大神的賜教,期待告訴原理,已經OK了。
Thank you very much for your help!

TOP

返回列表