0

我已经搜索了几天,但无法找到有关我的具体问题的任何信息。

我有一个日志文件,我想搜索(使用 findstr)“登录成功”,一旦找到,我想要一个时间戳,将整行和接下来的五行发送到文本文件。

我玩过 findstr 并尝试修改我在这里找到的其他建议,但无法找到一种方法将以下五行包含在我的输出中。

先感谢您,

埃里克

4

3 回答 3

2

从 UnxUtils http://unxutils.sourceforge.net/下载 grep

运行:grep -A 5 "登录成功" [日志文件名] > output.txt

于 2013-05-31T00:11:58.220 回答
1
@echo off
setlocal EnableDelayedExpansion

rem Look for the line with "Login Successful" and output it
(for /F "tokens=1* delims=:" %%a in ('findstr /N "Login Successful" theFile.log') do (
   set skip=%%a
   echo %date% @ %time%
   echo %%b

)) > textFile.txt

rem Add the next five lines
set lines=0
for /F "skip=%skip% tokens=1* delims=:" %%a in ('findstr /N "^" theFile.log') do (
   echo %%b>> textFile.txt
   set /A lines+=1
   if !lines! equ 5 goto :EOF
)
于 2013-05-31T13:08:15.927 回答
0
@ECHO OFF
SETLOCAL
SET /a gate=0
(
FOR /f "delims=" %%i IN ('type logfile.txt^|findstr /n "$" ') DO (
 SET "line=%%i"
 CALL :process
)
)>report.txt
GOTO :eof

:process
IF %gate% gtr 0 GOTO output
ECHO(%line%|FINDSTR /i /c:"login successful" >NUL
IF ERRORLEVEL 1 GOTO :EOF 
SET /a gate=6
:output
SET /a gate -=1
SET "line=%line:*:=%"
ECHO(%line%
GOTO :eof

由于您没有说后面的 5 行中是否有任何可能为空,因此该findstr/n方法用于重现任何空行。

本质上,如果找到目标字符串(我假设不区分大小写),则打开门以允许 6 行通过。如果门打开,则前导行号被剥离,所需行回显到目标文件中。

于 2013-05-31T01:57:18.777 回答