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

[文本处理] 批处理命令findstr如何找到以空格开头的行?

比如, a.exe会返回一系列输出信息,我需要从中找出以星号开头的或者以空格开头的.我试图这样但是没成功
a.exe | findstr "^* ^\x20"

  1. a.exe | findstr /b /c:"*" /c:" "
复制代码

TOP

回复 2# CrLf

原来如此,我一直在奇怪有了^为什么还有/B,那么/b的存在就是为了对付空格的情况么?

另外还想请教一下,我的a.exe会在执行结束后,根据执行的情况设置环境变量ERRORLEVEL 来让外部处理,比如
  1.         call a.exe
  2. IF ERRORLEVEL 2 GOTO :FAILED
  3. IF ERRORLEVEL 3 GOTO :FAILED
复制代码
但是现在我加了 findstr之后,似乎a.exe就再也不会去设置ERROELEVEL了,不知道为什么,也就是说无论如何都不会去执行GOTO语句了....
  1. call a.exe | findstr /b /c:"*" /c:" "
  2. IF ERRORLEVEL 2 GOTO :FAILED
  3. IF ERRORLEVEL 3 GOTO :FAILED
复制代码

TOP

  1. REM 先把结果放到一个日志文件里面
  2. call a.exe > a.log 2>&1
  3. REM 使用 if errorlevel 这种语法的时候最好把最大的值放在最前面
  4. IF ERRORLEVEL 3 GOTO :FAILED
  5. IF ERRORLEVEL 2 GOTO :FAILED
  6. REM 从日志文件里面获取符合条件的内容
  7. findstr /b /c:"*" /c:" " a.log
复制代码

TOP

回复 3# demonguy


    用于兼容空格的的是 /c
    /b 是个人习惯,比较通用,改用 ^ 也可以

TOP

原来如此...
那么能请教下为什么像我那样子ERRORLEVEL会失效么

TOP

回复 6# demonguy


    管道后面的findstr命令改变了errorlevel的值

TOP

原来如此, 感谢各位

TOP

返回列表