Задать вопрос
Kotyamba
@Kotyamba

Создание *.bat файла?

Подскажите, как сделать проверку в файле:

Есть файл xxx.log размером более 10 Мб. в самом конце должна быть строка «Everything is Ok», как сделать проверку этой строки, если она есть то выполнить команду такую-то если нет то выйти из скрипта.


OS: Windows
  • Вопрос задан
  • 4640 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 7
bagyr
@bagyr
$lastline = gc xxx.log | select -last 1
if ($lastline -eq «Everything is Ok») {write-host Wheee!}

PowerShell
Ответ написан
Комментировать
mambet
@mambet
Не могу устоять :) GREP'ы, PowerShell'ы — неспортивно.
Медленный вариант, использующий чистый batch:
for /f "delims=" %%a in (build.xml) do set lastLine="%%a"
if %lastLine%=="Everything is Ok" echo YEAH!

Правда, работать будет только под какой-нибудь виндой не младше XP.
Ответ написан
Комментировать
Kalantyr
@Kalantyr
Может, лучше это сделать при помощи PowerShell?
Ответ написан
@4eS
Думаю, вам поможет переменная %ERRORLEVEL%
Если в файле найдено искомое сочетание, переменная вернет «0», в противном случае «1».

Например:
find «Everything is Ok» <D:\filename.log
if %ERRORLEVEL%==1 start start.cmd
if %ERRORLEVEL%==1 pause

Если строка найдется, выполнится start.cmd, если такой строки в файле нет, скрипт будет ожидать нажатия любой клавиши.
Ответ написан
@bondbig
Слеши в пути к файлу попутал )
@echo off
findstr "Everything is Ok" d:/test.txt >null
if errorlevel 1 GOTO EXIT
:COMMAND
echo
echo "Whoooohoo!"
:EXIT
exit 0
Ответ написан
@bondbig
findstr «Everything is Ok» c:\path\to\logfile.log
Ответ написан
Комментировать
SegaZero
@SegaZero

@echo off
for /F %%I in ('"find /n /i "everything is ok" file.txt | cut -f 1 -d ] | cut -f 2 -d ["') do SET Number=%%I 2>nul
For /F "Tokens=3" %%A In ('Find /V /C "" file.txt') Do Set sCount=%%A 
If %sCount% GEQ %Number% Echo whoohoo


как то так. grep есть искаропки, утилиту cut можно взять из cygwin например
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы