PDA

Показать полную графическую версию : [решено] Вывод содержимого файлы в командную строку.


KeNt606
14-04-2012, 13:11
Здравствуйте, помогите пожалуйста дополнить 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
@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
zion87, Спасибо. А как сделать, чтобы при добавлении новой строчки в .log файл, она срузу же выводилась в консоль?

zion87
16-04-2012, 08:30
спасибо много!! а вот отметить сообщение ПОЛЕЗНЫМ - в самый раз!!!

для этого нужно сделать циклическую проверку
первый 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
На сколько я понял, циклическая проверка идёт благодаря PING? Можно ли сделать, чтобы .log файл читался сразу из своей папки, без какого либо копирования и сравнения. А то если .log файл не дополняется выводится "ожидание" и меняется цвет. Надо, чтобы .log файл просто выводился и консоль непрерывно следила за измнениями его.

zion87
16-04-2012, 19:43
вот постоянно следит за файлом логов измени значение (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
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
set /p log=
If "%log%"=="display" start log.bat

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

zion87
17-04-2012, 06:10
да ни как! в первом 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....




© OSzone.net 2001-2012