0

这是一个简单的批处理文件,它应该通过一个文件 (PingList_Results.txt) 运行并拉出与正则表达式 (IPv4 Addy) 匹配的任何行,但它不起作用。我确定问题很简单,但我看不到。谢谢!

示例 PingList_Results.txt:

用 32 字节数据 Ping 10.10.10.11:来自 10.10.10.11 的回复:字节=32 时间=62ms TTL=54

10.10.10.11 的 Ping 统计信息:数据包:发送 = 1,接收 = 1,丢失 = 0(0% 丢失),以毫秒为单位的近似往返时间:最小值 = 62 毫秒,最大值 = 62 毫秒,平均值 = 62 毫秒

用 32 字节数据 Ping 192.168.1.50:来自 192.168.1.50 的回复:字节=32 时间=61ms TTL=120

192.168.1.50 的 Ping 统计信息:数据包:发送 = 1,接收 = 1,丢失 = 0(0% 丢失),以毫秒为单位的近似往返时间:最小值 = 61 毫秒,最大值 = 61 毫秒,平均值 = 61 毫秒

批处理文件:

@echo off

SET LOGFILE=PingList_Results.txt

FOR /F "tokens=*" %%A IN ('FINDSTR /R "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" %LOGFILE%') DO (ECHO.%%A)
4

2 回答 2

1

FINDSTR 没有 {#,#} 支持,而是尝试逐字匹配这些字符 - 请尝试以下操作:

@echo off

SET LOGFILE=PingList_Results.txt

FOR /F "tokens=*" %%A in ('FINDSTR /R "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*" %LOGFILE% ') DO (ECHO %%A)

这有效地做同样的事情,但不需要 {1,3} 其中 [0-9]* 表示个或多个匹配。

来源于这个问题

于 2013-10-08T22:40:22.460 回答
0

见:http ://ss64.com/nt/findstr.html

到目前为止,我有这个:

FINDSTR /R "([0-9] .[0-9] .[0-9] .[0-9] )" %LOGFILE%

但我不知道如何输出找到的文本。

我认为 findstr 不支持 {1,3}。

于 2013-10-08T20:51:32.717 回答