Выполнить поиск в цикле DOS FOR - PullRequest
0 голосов
/ 13 июля 2011

Я хочу выполнить команду НАЙТИ для всех расширений файлов * .LOG в каталоге. Как мне этого добиться? Ниже приведено то, что у меня есть, но оно не работает, и я не знаю, в чем проблема.

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 голосов
/ 28 июля 2011

Несколько человек уже дали вам ответ.Чтобы найти и отфильтровать все ошибки Oracle в одном журнале, выполните команду:

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

, которая также включает имена файлов в каждой строке, как вы и просили.Если вы хотите отобразить только имена файлов, выполните эту вторую команду отдельно:

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

Итак, какая часть из них "не работает", как вы ее так красноречиво выразили?

0 голосов
/ 15 июля 2011

Вы, вероятно, хотите использовать

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

Вы также можете использовать

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

А затем использовать этот файл в качестве входных данных для вашего цикла

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

Некоторые замечания

  • ваш выходной файл также является .log в той же папке, в которой вы ищете. Если вы запустите программу несколько раз, выходной файл будет отображаться в ваших результатах и ​​удваивать количество # выходных строк

  • не используйте "type [file] | do_it", если вы можете просто использовать stdin: "<[file] do_it" </p>

...