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

[文本处理] 批处理怎样查找显示字符串所在行和下面几行内容?

有一个文本文件abc.st,文件内容很长,需要进行以下操作:
1.查找并显示出同时包含“ROTOT”和 "ROTORMASS"字符串所在行和下面4行内容,即:

ROTOT  ROTORLAENGE   ROTORMASS    WELLENMASSE  
   1          .4220       71.5872       55.3404
   2        3.8710   5913.1533    4718.9148
   3          .5050     162.4036         79.9331
TOTAL  4.7980     6174.1442   4854.1884


2. 提取红色数字进行下面计算,数据是变化的,但位置不变。
   
a=4*6500*71.5872/1500

b=4*6500*6174.1422/1500

求大神帮助,希望是bat代码。因为自己写了一些处理此文件的bat代码,想把他们组合。


问题补充:
由于数据无法拷出,只能敲出部分内容,其他内容以图片形式提供。见网盘

https://pan.baidu.com/s/1QRgF6FOWl9yaIyge_jmqFg

最终想把提取的数据和计算显示在窗口。自己写了一个简单的代码,但有2个问题:
1.只能找出含有独一无二字符的行,即含有字符串的第1、2行和最后一行,数字行无法通过findstr寻找。
2.计算所需的71.5872和6174.1442不能自动获取,需要手动输入,bat会忽略小数点后的数据,因此只能输入整数,否则计算结果错误。
  1. @echo off
  2. findstr “ROTORMASS  (KG*M2) TOTAL”%~dp0\ljzs-in\abc.st
  3. set /p N=N: 必须整数
  4. set /p M=M: 必须整数
  5. set /p MT=MT: 必须整数
  6. set /a a=4*6350*%MT%/%N%
  7. set /a b=4*6350*%M%/%N%
  8. echo a= 4*6350*%MT%/%N%=%a%
  9. echo b= 4*6350*%M%/%N%=%b%
  10. pause
复制代码
网上找到一段使用findstr查找字符串所在行和下面一行内容的代码。此代码觉得可以借鉴,但不知道如何更改。
  1. @Echo Off&Setlocal Enabledelayedexpansion
  2. For /f "tokens=1* delims=:" %%i in ('Type a.txt^|Findstr /n "问问"') do (
  3. Set n=&Set /a n=%%i+1
  4. Echo %%j>>b.txt
  5. For /f "tokens=1* delims=:" %%a in ('Type a.txt^|Findstr /n "."') do (If %%a==!n! Echo %%b>>b.txt)
  6. )
  7. Pause
复制代码

回复 2# SQYSQYSQY
谢谢回复,之前的问题描述可能不清楚,已补充。

TOP

回复 3# xystudio
谢谢回复,之前的问题描述可能不清楚,已补充。

TOP

回复 5# 523066680
谢谢回复,之前的问题描述可能不清楚,已补充。

TOP

回复 6# yhcfsr
谢谢回复,之前的问题描述可能不清楚,已补充。

TOP

回复 7# xczxczxcz
谢谢回复,之前的问题描述可能不清楚,已补充。

TOP

回复 8# ivor
谢谢回复,之前的问题描述可能不清楚,已补充。

TOP

回复 9# WHY
谢谢回复,之前的问题描述可能不清楚,已补充。

TOP

返回列表