Kotyamba
@Kotyamba

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

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

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


OS: Windows
  • Вопрос задан
  • 4562 просмотра
Пригласить эксперта
Ответы на вопрос 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
Ответ написан
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 например
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы