标题: [文本处理] 批处理命令findstr如何找到以空格开头的行? [打印本页]
作者: demonguy 时间: 2014-9-12 16:29 标题: 批处理命令findstr如何找到以空格开头的行?
比如, a.exe会返回一系列输出信息,我需要从中找出以星号开头的或者以空格开头的.我试图这样但是没成功
a.exe | findstr "^* ^\x20"
作者: CrLf 时间: 2014-9-12 16:52
- a.exe | findstr /b /c:"*" /c:" "
复制代码
作者: demonguy 时间: 2014-9-12 17:07
回复 2# CrLf
原来如此,我一直在奇怪有了^为什么还有/B,那么/b的存在就是为了对付空格的情况么?
另外还想请教一下,我的a.exe会在执行结束后,根据执行的情况设置环境变量ERRORLEVEL 来让外部处理,比如- call a.exe
- IF ERRORLEVEL 2 GOTO :FAILED
- IF ERRORLEVEL 3 GOTO :FAILED
复制代码
但是现在我加了 findstr之后,似乎a.exe就再也不会去设置ERROELEVEL了,不知道为什么,也就是说无论如何都不会去执行GOTO语句了....- call a.exe | findstr /b /c:"*" /c:" "
-
- IF ERRORLEVEL 2 GOTO :FAILED
- IF ERRORLEVEL 3 GOTO :FAILED
复制代码
作者: DAIC 时间: 2014-9-12 17:47
- REM 先把结果放到一个日志文件里面
- call a.exe > a.log 2>&1
- REM 使用 if errorlevel 这种语法的时候最好把最大的值放在最前面
- IF ERRORLEVEL 3 GOTO :FAILED
- IF ERRORLEVEL 2 GOTO :FAILED
-
- REM 从日志文件里面获取符合条件的内容
- findstr /b /c:"*" /c:" " a.log
复制代码
作者: CrLf 时间: 2014-9-12 17:59
回复 3# demonguy
用于兼容空格的的是 /c
/b 是个人习惯,比较通用,改用 ^ 也可以
作者: demonguy 时间: 2014-9-12 18:13
原来如此...
那么能请教下为什么像我那样子ERRORLEVEL会失效么
作者: DAIC 时间: 2014-9-12 19:15
回复 6# demonguy
管道后面的findstr命令改变了errorlevel的值
作者: demonguy 时间: 2014-9-12 19:32
原来如此, 感谢各位
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |