标题: [文本处理] 批处理命令findstr是否可以把条件并到一起? [打印本页]
作者: poi 时间: 2014-5-16 13:30 标题: 批处理命令findstr是否可以把条件并到一起?
findstr是否可以把条件并到一起??
多个条件怎么拼接???????????
------------------------------------------------------------------------
需求读取txt,以时间格式开头并且行内不含有“ERROR” 字符串的全部输出到新文本!!!- 2014-05-14 00:12:45,469 INFO [STDOUT] 00:12:45,469
- 2014-05-14 00:12:46,672 ERROR [STDOUT] 00:12:46,672
- 2014-05-14 00:13:45,501 INFO [STDOUT] 00:13:45,501 ERROR
- 2014-05-14 00:14:45,537 ERROR [STDOUT] 00:14:45,537
- 2014-05-14 00:14:54,335 INFO [STDOUT] 00:14:54,335
- <tracking_type>1</tracking_type>
- <custid>0215138009</custid>
- <language>1</language>
- <checkword>118c98ed78c84ea0a765307962be7da8</checkword>
复制代码
结果需要:
2 3 4 6 7 8 9行输出~
因文本较大不要使用按行读取!即 for
直接用findstr实现
作者: terse 时间: 2014-5-16 14:08
如果一定要用FINDSTR的话 恐怕难 至少排序不是原文件的
作者: terse 时间: 2014-5-16 14:25
本帖最后由 terse 于 2014-5-16 14:30 编辑
你的矛盾述说 造成直接错误结果
两个总有一个你要的
好像弄反了噢- (findstr /i "^[1-2][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" | findstr /iv "\<ERROR\>")<b.txt >结果1.txt
复制代码
临时文件过渡 反了- @ECHO OFF
- (findstr /i ^[1-2][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] | findstr /iv "\<ERROR\>")<b.txt >$
- findstr /ilxvg:$ b.txt>结果.txt
- del $
- pause
复制代码
作者: poi 时间: 2014-5-16 14:59
回复 3# terse
反了是什么意思???
----------------------------------------------------------------------------------------------
还有下面这个 if !flag! equ 2 怎么每次都是跳到else里~~- @echo off
- setlocal EnableDelayedExpansion
- echo 开始时间:%time%
- set flag=0
- (for /f "delims=" %%i in (1.txt) do (
- set "str=%%i"
- set "j=%%i"
- set "str=!str:~0,300!"
- echo "!str!" | findstr "^.....-..-..." >nul
- if !errorlevel! equ 0 (
- echo "!str!" | findstr " ERROR " >nul
- if !errorlevel! equ 0 (
- set flag=2
- echo. !j!
- )else (
- set flag=0
- )
- ) else (
- if !flag! equ 2 (
- echo. !j!
- echo 3333:!flag!
- )else (
- echo 222:!flag!
- )
- )
- ))>>flag_text.txt
- echo 结束时间:%time%
- pause
复制代码
作者: poi 时间: 2014-5-16 16:06
计算运行时间 单独对着怎么放到if语句里就报没有操作数~~~- echo 现在时间是%time:~0,2%点%time:~3,2%分%time:~6,2%秒
- set time1=%time:~0,2%%time:~3,2%%time:~6,2%
- pause
- echo 现在时间是%time:~0,2%点%time:~3,2%分%time:~6,2%秒
- set time2=%time:~0,2%%time:~3,2%%time:~6,2%
-
- set /a time3=%time2%-%time1%
- echo 间隔%time3%秒
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |