Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Вывод содержимого файлы в командную строку. (http://forum.oszone.net/showthread.php?t=232800)

KeNt606 14-04-2012 13:11 1899440

Вывод содержимого файлы в командную строку.
 
Здравствуйте, помогите пожалуйста дополнить bat-ник.
Имеется .bat, который запускает сервер CS:S:
Код:

@echo off
cls
echo Protecting srcds from crashes...
echo If you want to close srcds and this script, close the srcds window and type Y depending on your language followed by Enter.
title srcds.com Watchdog
:srcds
echo (%time%) srcds started.
start /wait srcds.exe -console -game cstrike +map "cs_alley_1&6" -tickrate 66 +fps_max 0 +maxplayers 18 +sv_lan 0 -insecure -master +mp_dynamicpricing 0 -nocrashdialog
echo (%time%) WARNING: srcds closed or crashed, restarting.
goto srcds
exit

Запускаю батник, запускается одно окно командной строки, сразу же из него запускается второе с SRCDS. Нужно что бы еще запускалось и третье, в котором бы выводился текстовый (.log) файл(переодически дополняющийся).

zion87 15-04-2012 20:25 1900247

Код:

@echo off

echo @echo off>c:\log.bat
echo echo file log>>c:\log.bat
echo echo -------->>c:\log.bat
echo title log>>c:\log.bat
echo type "c:\файл лог.log">>c:\log.bat

cls
echo Protecting srcds from crashes...
echo If you want to close srcds and this script, close the srcds window and type Y depending on your language followed by Enter.
title srcds.com Watchdog

start c:\log.bat

:srcds
echo (%time%) srcds started.
start /wait srcds.exe -console -game cstrike +map "cs_alley_1&6" -tickrate 66 +fps_max 0 +maxplayers 18 +sv_lan 0 -insecure -master +mp_dynamicpricing 0 -nocrashdialog
echo (%time%) WARNING: srcds closed or crashed, restarting.
goto srcds

del c:\log.bat

exit


KeNt606 16-04-2012 01:38 1900429

zion87, Спасибо. А как сделать, чтобы при добавлении новой строчки в .log файл, она срузу же выводилась в консоль?

zion87 16-04-2012 08:30 1900473

спасибо много!! а вот отметить сообщение ПОЛЕЗНЫМ - в самый раз!!!

для этого нужно сделать циклическую проверку
первый bat-ник(твой)

Код:

@echo off
cls
echo Protecting srcds from crashes...
echo If you want to close srcds and this script, close the srcds window and type Y depending on your language followed by Enter.
title srcds.com Watchdog

start log.bat

:srcds
echo (%time%) srcds started.
start /wait srcds.exe -console -game cstrike +map "cs_alley_1&6" -tickrate 66 +fps_max 0 +maxplayers 18 +sv_lan 0 -insecure -master +mp_dynamicpricing 0 -nocrashdialog
echo (%time%) WARNING: srcds closed or crashed, restarting.
goto srcds

taskkill /f /im log.bat
del c:\logo.log

exit

второй bat-ник (мой) положи в тот же каталог
имя log.bat
Код:

@echo off
color 0A
copy /y "d:\logo.log"  "c:\" >nul
echo file log
echo --------
title log
type "c:\logo.log"
ping -n 10 127.0.0.1 >NUL
:start
color 0A
@echo n|COMP "d:\logo.log" "c:\logo.log" >nul
if %errorlevel%==0 goto :next >nul
copy /y "d:\logo.log"  "c:\" >nul
color 0C
type "c:\logo.log"
ping -n 10 127.0.0.1 >NUL
:next
ping -n 2 127.0.0.1 >NUL & cls & echo Ћ¦Ё¤**ЁҐ .. & ping -n 2 127.0.0.1 >NUL & cls & echo Ћ¦Ё¤**ЁҐ ...
ping -n 2 127.0.0.1 >NUL & cls & echo Ћ¦Ё¤**ЁҐ  & ping -n 2 127.0.0.1 >NUL & cls & echo Ћ¦Ё¤**ЁҐ .
ping -n 2 127.0.0.1 >NUL & cls & echo Ћ¦Ё¤**ЁҐ .. & ping -n 2 127.0.0.1 >NUL & cls & echo Ћ¦Ё¤**ЁҐ ...
ping -n 2 127.0.0.1 >NUL & cls & echo Ћ¦Ё¤**ЁҐ  & ping -n 2 127.0.0.1 >NUL & cls & echo Ћ¦Ё¤**ЁҐ .
ping -n 2 127.0.0.1 >NUL & cls & echo Ћ¦Ё¤**ЁҐ .. & ping -n 2 127.0.0.1 >NUL & cls & echo Ћ¦Ё¤**ЁҐ ...
ping -n 2 127.0.0.1 >NUL & cls & echo Ћ¦Ё¤**ЁҐ  & ping -n 2 127.0.0.1 >NUL & cls & echo Ћ¦Ё¤**ЁҐ .
goto start

замени в обоих файлах путь d:\logo.log - на путь и имя своего файла log и переименуй все названия logo.log на имя своего log файла

KeNt606 16-04-2012 10:03 1900527

На сколько я понял, циклическая проверка идёт благодаря PING? Можно ли сделать, чтобы .log файл читался сразу из своей папки, без какого либо копирования и сравнения. А то если .log файл не дополняется выводится "ожидание" и меняется цвет. Надо, чтобы .log файл просто выводился и консоль непрерывно следила за измнениями его.

zion87 16-04-2012 19:43 1900922

вот постоянно следит за файлом логов измени значение (set file=logo.log)
Код:

@echo off
title log
echo file log && echo --------
set siz="0"
set file=logo.log
type %file%
:start
for %%I in (%file%) do if /i %siz% NEQ "%%~zI" set siz="%%~zI" && cls && echo file log && echo -------- && type %file%
goto start


KeNt606 16-04-2012 22:58 1901013

zion87, Спасибо, вот тут вроде всё работает как надо.
И последняя просьба, не сильно важная, но: как сделать, чтобы введя в этой консоли
читать дальше »
Код:

@echo off
cls
echo Protecting srcds from crashes...
echo If you want to close srcds and this script, close the srcds window and type Y depending on your language followed by Enter.
title srcds.com Watchdog

start log.bat

:srcds
echo (%time%) srcds started.
start /wait srcds.exe -console -game cstrike +map "cs_alley_1&6" -tickrate 66 +fps_max 0 +maxplayers 18 +sv_lan 0 -insecure -master +mp_dynamicpricing 0 -nocrashdialog
echo (%time%) WARNING: srcds closed or crashed, restarting.
goto srcds

taskkill /f /im log.bat
del c:\logo.log

exit

допустим "display" запустился bat с выводом лога(log.bat).?

zion87 16-04-2012 23:04 1901014

Код:

set /p log=
If "%log%"=="display" start log.bat


KeNt606 16-04-2012 23:40 1901024

Чуть-чуть не так надо. Я запустил первый бат, от него запустился вывод лога и SRCDS. Если я случаенно закрыл консоль с логом, то можно было бы вызвать её командой "display"
Как использовать start /wait log.bat, так что бы он не мешал запуску дальнейшей консоли(srcds), а то просто нужна закрыть консоль с логом чтобы другая зупустилась. И как у /wait убрать "Завершить выполнение пакетного файла [Y(да)/N(нет)]"?

zion87 17-04-2012 06:10 1901089

да ни как! в первом bat-нике задержку осуществляет строка
Код:

start /wait srcds.exe -console -game cstrike +map...
если убрать /wait то запуститься еще много раз
Код:

start /wait srcds.exe -console -game cstrike +map...
start /wait srcds.exe -console -game cstrike +map...
start /wait srcds.exe -console -game cstrike +map...
до бесконечности

а если поставить до /wait
Код:

set /p log=
If "%log%"=="display" start log.bat
start /wait srcds.exe -console -game cstrike +map...

то пока не забьешь переменную не запуститься srcds.exe
ТАК ЧТО ЗАПУСКАЙ В РУЧНУЮ!!!
ну или писать контроль за процессом log.bat....


Время: 01:25.

Время: 01:25.
© OSzone.net 2001-