2011-07-13 50 views
0

我想对目录中的所有文件扩展名* .LOG执行FIND命令。我怎样才能实现它?下面是我到目前为止,但它不工作,我不知道问题在哪里。在DOS FOR循环中执行FIND

for /R C:\folder\log %%i IN (*.LOG) DO (
TYPE %%i | find /I /N "ORA-" >> C:\folder\log\Errorfound.log 
ECHO %%i 
exit 
) 
+0

你怎么可以创建一个名称超过8 + 3个字符的文件? – progo

+0

找到接受通配符;' 'find/I/N“ORA-”* .log >> C:\ folder \ log \ Errorfound.log' –

+0

嗨Alex。这不起作用。如果你已经注意到,我已经有一个%%我在其中解析文件名。 – cooldude

回答

0

你可能想使用

findstr /R /I /N "ORA-" *.log 

你也使用

dir /s /b *.log > input.txt 

,然后使用该文件作为输入你的循环

for /f "eol=; tokens=1 delims=|" %%i in (input.txt) do (...) 

一些言论

  • 输出文件也是,你在搜索同一个文件夹日志。如果你运行该程序多次,输出文件将在搜索结果中显示出来,并增加一倍,你的输出线

  • 请勿使用“type [file] | do_it”如果你可以只使用标准输入:‘< [文件] do_it’

+0

hi pforret,我希望打印与搜索字符串匹配的文件名。我曾尝试使用/ M,但没有奏效。 – cooldude

0

有几个人已经给你答案要找到所有的Oracle错误过滤到一个日志,运行此命令:

C:\> findstr /ir ora- C:\folder\log\*.log >> C:\folder\log\OracleErrors.txt 

其中还包括在每一行中的文件名,你问 如果你只是想呼应的文件名,单独运行这第二个命令:

C:\> findstr /irm ora- C:\folder\log\*.log 

因此,你如此雄辩地说明了哪些部分“不起作用”?