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

[特效代码] [已解决]批处理如何从每个文件夹中找了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
1

评分人数

    • zqz0012005: 感谢给帖子标题标注[已解决]字样PB + 2

  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%a in ('dir /b /s *.txt') do (
  3.      set No=%%~na
  4.      set No1=!No:*.=!
  5.      call set No=%%No:.!No1!=%%
  6.      for /f "tokens=1,2* delims= " %%b in ('type "%%a"') do (
  7.          if "%%b"=="1" echo %%c !No!
  8.      )
  9. ))>$
  10. (echo No. affinity
  11. for /f "tokens=1-2 delims= " %%a in ('sort /r $') do echo %%b %%a
  12. )>result.txt&del $
  13. pause
复制代码
1

评分人数

TOP

回复 2# apang


   高手啊,太感谢了。

TOP

  1. @echo off
  2. (echo No. affinity
  3. for /f "tokens=1,3 delims= " %%a in ('findstr /brs /c:"  *1 " *.txt^|sort /r') do (
  4.     for /f "delims=." %%i in ("%%~nxa") do echo %%i %%b
  5. )
  6. )>result.txt
  7. pause
复制代码
1

评分人数

    • popelrain: 谢谢,刚试了一下您的代码,只能提取数据, ...技术 + 1

TOP

回复 4# powerbat
谢谢,刚试了一下您的代码,只能提取数据,没有排序

TOP

返回列表