在DOS FOR循环中执行FIND

时间:2011-07-13 11:08:50

标签: loops cmd dos

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

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

2 个答案:

答案 0 :(得分:0)

您可能想要使用

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

您也可以使用

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

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

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

一些评论

  • 您的输出文件也是您正在搜索的同一文件夹中的.log。如果您多次运行该程序,输出文件将显示在您的结果中并加倍您的输出行< / p>

  • 如果你只能使用stdin,请不要使用“type [file] | do_it”:“&lt; [file] do_it”

答案 1 :(得分:0)

有几个人已经给你答案了。要查找并过滤所有Oracle错误到一个日志中,请运行以下命令:

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

其中还包括您询问的每行中的文件名。 如果您只想回显文件名,请单独运行第二个命令:

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

所以这些中哪一部分“不起作用”,就像你如此雄辩地说出来的那样?