找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 14046|回复: 9

[文本处理] [已解决]批处理在文本文件查找关键字,当在某行找到关键字接着当前行找另一个关键字

[复制链接]
发表于 2024-7-21 22:33:23 | 显示全部楼层 |阅读模式
批处理查找文本文件d:\test\test.txt里的某一行含有2D Graphics这个字符串,并接着在当前行查找PASS字符串,找到就显示PASS找不到就显示FAIL
这个批处理写了一晚上就是写不通,for /f "tokens=* delims=",及findstr都用上了,结果就是不准,哎小弟水平有限,哪位大佬帮我写一个不胜感激

下面是文本文件大概的信息
CPU   3        183 Billion     FAIL   0        No errors
GPGPU   1        2.390 Trillion  PASS   0        No errors
Memory (RAM)   1        5.028 Billion   PASS   0        No errors
2D Graphics   40       11043           PASS   0        No errors
3D Graphics   0        4948            PASS   0        No errors
Video Playback   2        31              PASS   0        No errors
Disk (C   2        5.209 Billion   PASS   0        No errors
Disk (D:)   2        5.285 Billion   FAIL   0        No errors

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2024-7-21 22:49:39 | 显示全部楼层
  1. | find "2D" | find "pass"
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2024-7-21 23:04:41 | 显示全部楼层
回复 2# newswan
大佬我是这样写的还是不准是哪里的问题
@echo off
set "file=d:\test\test.txt"

for /f "delims=" %%a in ('type "%file%" ^| findstr /C:"2D Graphics"') do (
    echo %%a | findstr /C:"PASS" > nul
    if not errorlevel 1 (
        echo PASS && pause
    ) else (
        echo FAIL && pause
    )
)
 楼主| 发表于 2024-7-21 23:12:38 | 显示全部楼层
@echo off
set "file=d:\test\test.txt"

for /f "delims=" %%a in ('type "%file%" ^| findstr /C:"2D Graphics"') do (
    echo %%a | findstr /C:"^PASS$" /C:" PASS " > nul
    if not errorlevel 1 (
        echo %%a
        echo PASS
        pause
    ) else (
        echo %%a
        echo FAIL
        pause
    )
)
重定向的问题,总算好用了,谢谢newswan大佬
发表于 2024-7-22 20:43:22 | 显示全部楼层
如果要 正则表达式 , 放弃 findstr ,用 sed grep awk ,
  1. grep -E "2D Graphics .+ PASS " data.txt
复制代码
发表于 2024-7-22 22:06:41 | 显示全部楼层
回复 1# svke

楼主的问题可用以下一行流了结...

  1. findstr /irc:"2D Graphics.*pass" "d:\test\test.txt">nul&&(echo,Pass)||(echo,Fail)
复制代码
 楼主| 发表于 2024-7-23 15:55:08 | 显示全部楼层
回复 6# aloha20200628
都是大佬等一下去测试一下谢谢大佬
 楼主| 发表于 2024-7-23 15:55:22 | 显示全部楼层
回复 5# newswan
都是大佬等一下去测试一下谢谢大佬
 楼主| 发表于 2024-7-23 15:57:24 | 显示全部楼层
回复 5# newswan
弱弱的问一句,window下有grep吗?linux下倒是有用过
发表于 2024-7-23 16:26:12 | 显示全部楼层
回复  newswan
弱弱的问一句,window下有grep吗?linux下倒是有用过
svke 发表于 2024-7-23 15:57



有 win 版,论坛里有,也有比较完整的,msys
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 22:07 , Processed in 0.015726 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表