Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file Windows FindStr用于搜索字符串和匹配行_Batch File_Cmd_Findstr - Fatal编程技术网

Batch file Windows FindStr用于搜索字符串和匹配行

Batch file Windows FindStr用于搜索字符串和匹配行,batch-file,cmd,findstr,Batch File,Cmd,Findstr,我在使用FIND或FINDSTR命令查找日志文件中的特定字符串并返回其输出时遇到了一些问题,其中匹配字符串上有一行,下有一行 到目前为止,这是我唯一尝试过的命令。我试图在网上搜索,但找不到任何有用的东西 findstr/n“检测到网络问题”c:\Log.txt 示例日志数据(log.txt): 1371524155 2013年6月18日星期二10:55:55 1371524160 2013年6月18日星期二10:56:00 1371524165 2013年6月18日星期二10:56:05 检测到

我在使用FIND或FINDSTR命令查找日志文件中的特定字符串并返回其输出时遇到了一些问题,其中匹配字符串上有一行,下有一行

到目前为止,这是我唯一尝试过的命令。我试图在网上搜索,但找不到任何有用的东西

findstr/n“检测到网络问题”c:\Log.txt

示例日志数据(log.txt):

1371524155 2013年6月18日星期二10:55:55 1371524160 2013年6月18日星期二10:56:00 1371524165 2013年6月18日星期二10:56:05 检测到网络问题 1371523243 2013年6月18日星期二10:40:43 1371523248 2013年6月18日星期二10:40:48 1371523253 2013年6月18日星期二10:40:53 期望输出:

1371524165 Tue Jun 18 10:56:05 2013 NETWORK ISSUE DETECTED 1371523243 Tue Jun 18 10:40:43 2013 1371524165 2013年6月18日星期二10:56:05 检测到网络问题 1371523243 2013年6月18日星期二10:40:43 谢谢你的帮助


谢谢。

老问题,但我刚找到

@echo off
setlocal enabledelayedexpansion

for /f "tokens=1 delims=[]" %%i in ('type test.txt^|find /n "NETWORK ISSUE DETECTED"') do (
  set /a a=%%i-1
  set /a b=%%i+1
  for /f "tokens=1,* delims=[]" %%j in ('find /n /v "" test.txt^|findstr /l "[!a!] [%%i] [!b!]"') do echo %%k 
  echo/
)

其工作方式:对线路编号,查找“检测到网络问题”的线路及其线路编号;查找并打印行[linenumber-1],[linenumber],[linenumber+1]

嗨,有人能帮我吗?谢谢:)我也在找同样的东西……只是我想要这期杂志的下10行。我将尝试添加DOS标记,看看是否有帮助。我在
findstr
文档中没有看到任何信息表明这是可能的,我也没有看到。没有人说
findstr
支持此功能,这可能是您无法在此处获得答案的原因。
@echo off
setlocal enabledelayedexpansion

for /f "tokens=1 delims=[]" %%i in ('type test.txt^|find /n "NETWORK ISSUE DETECTED"') do (
  set /a a=%%i-1
  set /a b=%%i+1
  for /f "tokens=1,* delims=[]" %%j in ('find /n /v "" test.txt^|findstr /l "[!a!] [%%i] [!b!]"') do echo %%k 
  echo/
)