Board logo

标题: [求助]如何用BAT自动搜索TXT文档内的多个特定字符? [打印本页]

作者: flybird2020     时间: 2007-7-25 16:30    标题: [求助]如何用BAT自动搜索TXT文档内的多个特定字符?
每隔一段时间我就要备份一次日志 并要在日志中搜索是否有特定字样的字符<如某个IP:222.222.222.222> 手动要查的话太多了,不方便 能不能写个BAT 一次性查出来是否在此次日志中含有我要搜索的字符呢? 谢谢高手 小菜太菜了 PS:补充一下 我是要在多个IP集合中查找一定数量的IP 比如在1000个IP中找我指定的50个IP是否存在 [ Last edited by flybird2020 on 2007-7-26 at 01:47 PM ]

作者: slore     时间: 2007-7-25 20:59
findstr命令

作者: wudixin96     时间: 2007-7-25 21:12
灌水灌水,论坛什么时候开的? 真是不知道没论坛的日子,不知道怎么过的。

作者: Runas     时间: 2007-7-25 21:21
这样? @echo off & setlocal ENABLEDELAYEDEXPANSION cd /d "c:\日志备份" ::存放日志文件的目录 for /f "delims=" %%i in ('dir /a-d /b *.log') do ( for /f "delims=" %%a in ('type "%%i"') do ( set str=%%a echo !str:.={! | findstr .*{.*{.*{.*>nul && echo %%i:!str! ) ) pause

作者: wudixin96     时间: 2007-7-25 21:25
这个点还是不要替换为{好啊, 反正findstr的正则也支持.的啊。

作者: Runas     时间: 2007-7-25 21:44
可是,他要求的IP是类似192.168.1.1的格式,其中的"."不是和findstr的表达式一样了吗?不替换的话貌似批处理会将IP格式"."当成findstr的通配符表达式来处理了。 我是菜鸟,只想到这种笨方法。^_^! [ Last edited by Runas on 2007-7-25 at 09:48 PM ]

作者: wudixin96     时间: 2007-7-25 21:54
在正则中.是表示匹配任何字符。 但是是可以转义的。\.就可以转义出来了 而且匹配的是数字,就不要用.来匹配了。 [0-9] [ Last edited by wudixin96 on 2007-7-25 at 09:56 PM ]

作者: Runas     时间: 2007-7-25 22:35
\.转义可以理解,但是不用.来匹配的话,难道IP用[0-9]\.[0-9]\.[0-9]\.[0-9]这样来表示吗?

作者: wudixin96     时间: 2007-7-25 22:38
用.的话,岂不是aaa.bbb.vvv.rrr也匹配?

作者: Runas     时间: 2007-7-25 22:45
这个我也明白,但是我不太晓得用findstr的正则,兄能否按照LZ的要求,写一份范例供我们这些小菜参考一下?

作者: flybird2020     时间: 2007-7-26 13:46
E。。。 我是要在多个IP中去查少量IP 比如在1000个IP中查找我需要找的50个IP 如果这个日志里有,就告诉我哪个有就好了

作者: jckjuc     时间: 2007-7-26 23:04
看到这些高手在讨论,真是学到不少东东啊。 真是感谢让我成为论坛的一分子啊。