Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Bat файл - рестартер

Ответить
Настройки темы
CMD/BAT - Bat файл - рестартер

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте.
Подскажите одну проблему...
Есть bat файл, он осуществляет перезагрузку серверного приложения в случае падения этого приложения. Ранее этот файл находился у меня в папке с самим сервером и никаких проблем не было. А теперь нужно заменить эту систему немного. Таким образом что есть папка, в нйе этот bat файл. А уже в этой папке есть папка public к примеру и в папке public само серверное приложение которым и должен управлять bat файл. Но когда сделал таким образом все, при запуске bat файла возникла проблема что не найдет server.cfg, а это конфиг. файл серверного приложения. Не подскажите ли как исправить?

Вот содержание bat файла старого, до изменения в системе:


Код: Выделить весь код
@ECHO OFF
TITLE servrestarter
COLOR 09

SET option_log=0

SET folder=restarter
SET file_1=server_log.txt
SET file_2=%folder%\server.log
SET file_3=%folder%\restarter.log
SET file_4=%folder%\reset.reg
SET server=srvStart.exe
SET count=0
SET regkey="HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug"

IF NOT EXIST %server% (

    COLOR 0C
    ECHO %server% was not found!
    ECHO Press any key to exit.
    PAUSE > NUL
    GOTO EOF
)

IF NOT EXIST %folder% MD %folder%

IF NOT EXIST %file_4% (

    REG EXPORT %regkey% %file_4% > NUL
    REG ADD %regkey% /V Auto /D 1 /F > NUL
    REG ADD %regkey% /V Debugger /D 0 /F > NUL
)

:START

    CLS & ECHO.

    SET hh=%time:~0,2%

    IF %hh% LSS 10 SET hh=0%time:~1,1%

    SET msg=[%date%][%hh%:%time:~3,5%] Server

    IF %count% EQU 0 (SET msg=%msg% started.) ELSE SET msg=%msg% restarted [%count%x].

    ECHO  %msg% & ECHO %msg%>> %file_3%

    IF %option_log% EQU 1 (

        ECHO %msg%>> %file_2%
        TYPE %file_1%>> %file_2%
        FOR /L %%i IN (1,1,4) DO ECHO.>> %file_2%
    )

    GOTO NEXT

:NEXT

    SET /A count+=1
    call %server%
    GOTO START

:EOF
а вот после изменения файловой структуры:

Код: Выделить весь код
@ECHO OFF
TITLE servrestarter
COLOR 09

SET option_log=0

SET folder=restarter
SET file_1=server_log.txt
SET file_2=%folder%\server.log
SET file_3=%folder%\restarter.log
SET file_4=%folder%\reset.reg
SET server=public\srvStart.exe
SET count=0
SET regkey="HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug"

IF NOT EXIST %server% (

    COLOR 0C
    ECHO %server% was not found!
    ECHO Press any key to exit.
    PAUSE > NUL
    GOTO EOF
)

IF NOT EXIST %folder% MD %folder%

IF NOT EXIST %file_4% (

    REG EXPORT %regkey% %file_4% > NUL
    REG ADD %regkey% /V Auto /D 1 /F > NUL
    REG ADD %regkey% /V Debugger /D 0 /F > NUL
)

:START

    CLS & ECHO.

    SET hh=%time:~0,2%

    IF %hh% LSS 10 SET hh=0%time:~1,1%

    SET msg=[%date%][%hh%:%time:~3,5%] Server

    IF %count% EQU 0 (SET msg=%msg% started.) ELSE SET msg=%msg% restarted [%count%x].

    ECHO  %msg% & ECHO %msg%>> %file_3%

    IF %option_log% EQU 1 (

        ECHO %msg%>> %file_2%
        TYPE %file_1%>> %file_2%
        FOR /L %%i IN (1,1,4) DO ECHO.>> %file_2%
    )

    GOTO NEXT

:NEXT

    SET /A count+=1
    call %server%
    GOTO START

:EOF
может быть нужно как-то задать рабочую папку для переложения? чтоб ей была та где и лежит весь сервер. ?
или как-то задать в batнике нахождение всех необходимых файлов?

Отправлено: 21:53, 01-07-2010

 

Пользователь


Сообщения: 140
Благодарности: 92

Профиль | Отправить PM | Цитировать


Не очень понятно, что и где лежит (public к примеру...). Сам файл "server.cfg" у тебя в батнике нигде не указан, да и потом ...

Судя по первому батнику у тебя файлы "server.exe", "server_log.txt" и папка "restarted" находились в одной директории. А вот уже по второму батнику в корневой директории лежит "server_log.txt", папка "public ", содержащая "server.exe" и папка "restarter", содержащая "server.log", "restarter.log", "reset.reg". Т.о. пути у тебя не совпадают.

попробуй сделать так:

поместить "server_log.txt" в папку "public ", в эту же папку положить подпапку "restarted", с находящимися в ней указанными выше файлами и поищи этот файл "server.cfg", по идее он должен находиться в одной папке с "server.exe";

в батнике пропиши - SET folder=public\restarter
SET file_1=public\server_log.txt.

может оно и поможет, хотя дело темное... Видимо нарушена структура каталогов необходимая для корректной работы самого приложения "server.exe". Сообщение о ненайденном файле выдается в cmd? Да и информации мало, что за сервер то?

Последний раз редактировалось deepred, 01-07-2010 в 23:44.


Отправлено: 22:19, 01-07-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


первый вариант батника оригинального, это когда все в одной папке лежит.
А второй, это когда я хочу изменить структуру. Что бы в папке A, основной папке лежал этот батник, а само сервер приложение переместить в папку public которая находится в основной папке A.

Файлы server.log и restaer.log в папке restarter которые их ведет только батник, к самому серверу они не относятся. Да и их легирование отключено фактически опцией SET option_log=0

ну и так опять о проблеме самой, в оригинальном батнике когда все находилось в одной папке путь к файлу запуска сервера был SET server=srvStart.exe. Ну и соответственно там лежали рядом всякие его server.cfg и т.д.
А когда поменял структуру и батник оставил там где он был, а сам сервер поместил в папку public поменял и путь в батнике до фaйла запуска сервера, то есть это: SET server=public\srvStart.exe.

Ну а при попытке запуска после изменений получается такое ощущение, что батник пытается запустить сервер из основной папки, а не из public где он лежит и все его компоненты. И в окошке батника появляеться надпись что не найден конфиг файл сервера, server.cfg.

Цитата deepred:
Да и информации мало, что за сервер то? »
Маленький и простенький, игровой...

Отправлено: 01:07, 02-07-2010 | #3


Новый участник


Сообщения: 23
Благодарности: 2

Профиль | Отправить PM | Цитировать


DimankoR, что за сервер, название игры? Подозреваю, надо в параметрах прописать папку.
Если это игра на базе Quake 3 (судя по всему, это именно так), достаточно наставить сервер на путь истинный, запуская с параметром +set fs_cdpath "%CD%\public"
Возможно параметр немного отличается, это я показал, как надо запускать сервер Jedi Academy.

Отправлено: 14:16, 07-07-2010 | #4


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


1) Отправь путь папки с конфигом как параметр.
2) В винде есть файл [комманда rundll32] (не помню как называется- может гуру помогут) с помощью которого можно запустить файл так, будто бы он находится в нужной папке...
3) Пошаманить с subst.exe - может поможет...

Отправлено: 10:37, 08-07-2010 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Bat файл - рестартер

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Не работает скрипт-рестартер в Win2003SP2 x64 Anitalink Microsoft Windows NT/2000/2003 9 26-06-2010 03:02
командный файл(.bat) gh6 Хочу все знать 5 24-10-2006 11:59
CMD/BAT - Народ help me...Bat-файл SeregaSp Скриптовые языки администрирования Windows 2 07-06-2006 11:55
Bat-файл dallas Хочу все знать 12 21-06-2004 12:38
CMD/BAT - Нужен BAT файл Domovoi Скриптовые языки администрирования Windows 22 05-05-2004 14:12




 
Переход