партия с использованием набора - PullRequest
1 голос
/ 07 февраля 2012

В настоящее время я делаю findstr из набора файлов журналов с именем link.2011*.log, используя пакетный файл с командой SET, но у меня возникают проблемы при попытке вывести файл журнала.

Код:

...
set /P log=.\DIR\%DEV%\link.2011*.log
findstr /L /C:"matrix" %log%
if errorlevel 1 (
echo %DEV% --- matrix not found >> .\output.txt
) else (
echo %DEV% --- matrix found %log% >> .\output.txt
:END

output.txt печатает переменную %dev%, но переменная %log% выводит всю строку .\DIR\%DEV%\link.2011*.log

Я хотел бы, чтобы код выводил фактическую link.2011xxxxxxxx.log, а не строка.

Любая помощь приветствуется.

Спасибо.

1 Ответ

0 голосов
/ 07 февраля 2012

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

FINDSTR /M /L /C:"matrix" "%log%" >> .\output.txt

Если вы хотите, чтобы вывод был точно таким же, как в вашем примере скрипта, вы можете попробовать следующий подход:

FINDSTR /M /L /C:"matrix" "%log%" > .\tmpoutput.txt && (
  ECHO %DEV% --- matrix found: >> .\output.txt
) || (
  ECHO %DEV% --- matrix not found >> .\output.txt
)
TYPE .\tmpoutput.txt >> .\output.txt
DEL .\tmpoutput.txt

То есть команда FINDSTR ищет строку и выводит список файлов во временный файл. Если поиск был успешным, сообщение matrix found печатается на .\output.txt, в противном случае - matrix not found.

После этого содержимое .\tmpoutput.txt добавляется к output.txt. (Вы можете не беспокоиться об этом шаге, если не было совпадения, потому что в этом случае временный файл будет пустым, что не повлияет на содержимое output.txt.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...