标题: [特效代码] [已解决]批处理如何从每个文件夹中找了txt文档,然后提取数据? [打印本页]
作者: popelrain 时间: 2012-3-19 22:09 标题: [已解决]批处理如何从每个文件夹中找了txt文档,然后提取数据?
求助:我这里有好几十百个文件夹,每个文件夹里用2个文件:
一个为 Y21.hdc_log.txt,另一个为Y21.hdc_out,文件夹的名字为Y21.hdc.lianyu;
第二个文件夹为
一个为 Y23.hdc_log.txt,另一个为Y23.hdc_out,文件夹的名字为Y23.hdc.lianyu;
第三个文件夹为
一个为 Y35.hdc_log.txt,另一个为Y35.hdc_out,文件夹的名字为Y35.hdc.lianyu;
。
。
。
。。其中Y21.hdc_log.txt文档的里的内容如下:
Detected...
Reading input ...
Setting up...
Analyzing ...
Using seed...
Search ...
Refining results ...
mode | affinity | dist from best mode
| (kcal/mol) | rmsd l.b.| rmsd u.b.
-----+------------+----------+----------
1 -12.1 0.000 0.000
2 -11.8 1.101 2.445
Writing output ...
。。其中,Y23.hdc_log.txt文档内容如下:
Detected...
Reading input ...
Setting up...
Analyzing ...
Using seed...
Search ...
Refining results ...
mode | affinity | dist from best mode
| (kcal/mol) | rmsd l.b.| rmsd u.b.
-----+------------+----------+----------
1 -12.8 0.000 0.000
2 -11.9 1.103 2.448
Writing output ...
。。其中,Y35.hdc_log.txt文档内容如下:
Detected...
Reading input ...
Setting up...
Analyzing ...
Using seed...
Search ...
Refining results ...
mode | affinity | dist from best mode
| (kcal/mol) | rmsd l.b.| rmsd u.b.
-----+------------+----------+----------
1 -12.1 0.000 0.000
2 -11.8 1.213 2.481
Writing output ...
等等,文件夹和txt文档的名字中的Y后面的数字不具有连续性,现在想从这几百个文件夹中进去,找到里面的.txt文档,提取里面的数据到new.txt文档里。要求:
1、只提取数字1所在行和affinity(kcal/mol)所在列对应的数据
2、然后把1替换为txt文档的文件名中的类似Y21,Y23和Y35的部分等
3、生成的文档中Y21,Y23和Y35所对应的列前加No.,数字所对应的列前加affinity(kcal/mol)或者affinity都行。
4、数字(负值)应该从小到大排列(注意,有的时候两个数字会是一样的)
最后生成的txt中应该显示
例如:
No. affinity(kcal/mol)
Y23 -12.8
Y21 -12.1
Y35 -12.1
作者: apang 时间: 2012-3-19 23:23
- @echo off&setlocal enabledelayedexpansion
- (for /f "delims=" %%a in ('dir /b /s *.txt') do (
- set No=%%~na
- set No1=!No:*.=!
- call set No=%%No:.!No1!=%%
- for /f "tokens=1,2* delims= " %%b in ('type "%%a"') do (
- if "%%b"=="1" echo %%c !No!
- )
- ))>$
- (echo No. affinity
- for /f "tokens=1-2 delims= " %%a in ('sort /r $') do echo %%b %%a
- )>result.txt&del $
- pause
复制代码
作者: popelrain 时间: 2012-3-19 23:33
回复 2# apang
高手啊,太感谢了。
作者: powerbat 时间: 2012-3-20 00:06
- @echo off
- (echo No. affinity
- for /f "tokens=1,3 delims= " %%a in ('findstr /brs /c:" *1 " *.txt^|sort /r') do (
- for /f "delims=." %%i in ("%%~nxa") do echo %%i %%b
- )
- )>result.txt
- pause
复制代码
作者: popelrain 时间: 2012-3-20 02:31
回复 4# powerbat
谢谢,刚试了一下您的代码,只能提取数据,没有排序
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |