标题: [文本处理] [已解决]批处理在文本文件查找关键字,当在某行找到关键字接着当前行找另一个关键字 [打印本页]
作者: svke 时间: 2024-7-21 22:33 标题: [已解决]批处理在文本文件查找关键字,当在某行找到关键字接着当前行找另一个关键字
批处理查找文本文件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
作者: newswan 时间: 2024-7-21 22:49
- | find "2D" | find "pass"
复制代码
作者: svke 时间: 2024-7-21 23:04
回复 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
)
)
作者: svke 时间: 2024-7-21 23:12
@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大佬
作者: newswan 时间: 2024-7-22 20:43
如果要 正则表达式 , 放弃 findstr ,用 sed grep awk ,- grep -E "2D Graphics .+ PASS " data.txt
复制代码
作者: aloha20200628 时间: 2024-7-22 22:06
回复 1# svke
楼主的问题可用以下一行流了结...
- findstr /irc:"2D Graphics.*pass" "d:\test\test.txt">nul&&(echo,Pass)||(echo,Fail)
复制代码
作者: svke 时间: 2024-7-23 15:55
回复 6# aloha20200628
都是大佬等一下去测试一下谢谢大佬
作者: svke 时间: 2024-7-23 15:55
回复 5# newswan
都是大佬等一下去测试一下谢谢大佬
作者: svke 时间: 2024-7-23 15:57
回复 5# newswan
弱弱的问一句,window下有grep吗?linux下倒是有用过
作者: newswan 时间: 2024-7-23 16:26
回复 newswan
弱弱的问一句,window下有grep吗?linux下倒是有用过
svke 发表于 2024-7-23 15:57
有 win 版,论坛里有,也有比较完整的,msys
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |