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

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

批处理查找文本文件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
1

评分人数

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

回复  newswan
弱弱的问一句,window下有grep吗?linux下倒是有用过
svke 发表于 2024-7-23 15:57



有 win 版,论坛里有,也有比较完整的,msys

TOP

回复 5# newswan
弱弱的问一句,window下有grep吗?linux下倒是有用过

TOP

回复 5# newswan
都是大佬等一下去测试一下谢谢大佬

TOP

回复 6# aloha20200628
都是大佬等一下去测试一下谢谢大佬

TOP

回复 1# svke

楼主的问题可用以下一行流了结...
  1. findstr /irc:"2D Graphics.*pass" "d:\test\test.txt">nul&&(echo,Pass)||(echo,Fail)
复制代码

TOP

如果要 正则表达式 , 放弃 findstr ,用 sed grep awk ,
  1. grep -E "2D Graphics .+ PASS " data.txt
复制代码

TOP

@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大佬

TOP

回复 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
    )
)

TOP

  1. | find "2D" | find "pass"
复制代码
1

评分人数

TOP

返回列表