Форум программистов, компьютерный форум, киберфорум
Наши страницы

Batch (CMD/BAT)

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.93
nivs
3 / 3 / 0
Регистрация: 21.10.2011
Сообщений: 50
#1

Автоматическое подключение к серверу после разрыва соединения с ним - CMD/BAT

08.02.2012, 23:15. Просмотров 4122. Ответов 10
Метки нет (Все метки)

Собственно, сабж. Пока ползал по форуму, пофиксил некоторые недочёты, но проблема осталась нершённой.
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
:: запуск клиента
start vlc.exe http://192.168.1.14:8000/All
 
:: начало костыля
set /a flag = 0
 
:reload
ping 192.168.1.14
 
:: если пинга нет, то закрытие всех клиентов и начало отсчёта заново
if errorlelel 1 (taskkill /F /IM vlc.exe & set /a flag = 0)
 
:: для того, чтобы лишние клиенты не запускались
set /a flag = flag + 1
 
:: чтобы дальше не лезло, если 1 раз пингануло
if %flag% == 1 (goto reload)
 
:: если пингануло дважды, то выражение, что выше в скобках, уже выполняться не будет
:: и по идее flag >= 2
:: А flag == 2 лишь один раз, ближайший поле восстановления соединения с сервером
:: (пока связь не восстановлена flag == 0 или flag == 1
if %flag% == 2 (start vlc.exe http://192.168.1.14:8000/All)
 
:: чтобы буфер не переполнялся
if %flag% == 10 (set /a flag = 3)
 
goto reload
Ну был ещё вариант вместо
Windows Batch file
1
2
ping 192.168.1.14
if errorlelel 1 (taskkill /F /IM vlc.exe & set /a flag = 0)
использовать
Windows Batch file
1
ping 78.155.218.207 | find "100%%" && (taskkill /F /IM vlc.exe & set /a flag = 0)
но тоже безрезультатно. Что исправить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2012, 23:15
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Автоматическое подключение к серверу после разрыва соединения с ним (CMD/BAT):

Скрипт для разрыва Интернет-соединения по условию - CMD/BAT
Здравствуйте! Помогите, плиз, в реализации следующей задумки. Нужен скрипт, который бы мониторил интернет-соединение и подсчитывал общее...

Рабочий метод разрыва конкретного активного соединения из командной строки Windows7 - CMD/BAT
Рабочий метод разрыва конкретного активного соединения из командной строки Windows7. Как это сделать? Спасибо.

Как автоматизировать подключение к серверу? - Администрирование Windows
Имеется сервер с расшаренными папками и клиент на Windows XP. Когда с клиента пытаюсь зайти на сервер через файловый браузер, то первый...

Подключение к серверу через VPN - Администрирование Windows
День добрый форумчане. Возник вопрос в следующем. Имеется организация у нас в городе с 40 пользователями и десяток пользовтелей с разных...

Подключение к серверу лицензий в доверенном домене - Администрирование Windows
Возможно ли это? Если да, то как это делается? Добавлено через 1 час 1 минуту Если запускаю оснастку Terminal Server Licensing под...

Подключение к серверу через удаленный рабочий стол - Администрирование Windows
Не могу понять почему не могу подключиться через удаленный рабочий стол если адрес 2-х серверов к которым хочу подключиться почти...

10
gimntut
879 / 182 / 15
Регистрация: 18.07.2011
Сообщений: 257
10.02.2012, 07:44 #2
Цитата Сообщение от nivs Посмотреть сообщение
но проблема осталась нершённой
Проблема не описана
0
nivs
3 / 3 / 0
Регистрация: 21.10.2011
Сообщений: 50
10.02.2012, 23:21  [ТС] #3
Необходимо заново запускать программу при восстановлении соединения с сервером.
0
gimntut
879 / 182 / 15
Регистрация: 18.07.2011
Сообщений: 257
11.02.2012, 07:47 #4
Убери пробелы с обеих сторон от знака равно.
0
nivs
3 / 3 / 0
Регистрация: 21.10.2011
Сообщений: 50
11.02.2012, 15:43  [ТС] #5
Та же фигня
0
gimntut
879 / 182 / 15
Регистрация: 18.07.2011
Сообщений: 257
11.02.2012, 20:08 #6
Грубых ошибок не видно.
Сделай лог работы программы и выложи его сюда в виде файла. Посмотрим.
1
nivs
3 / 3 / 0
Регистрация: 21.10.2011
Сообщений: 50
11.02.2012, 22:56  [ТС] #7
Я не уверен,что всё верно сделал
Батник - http://pastebin.com/nReDMV76
А это наверно то, что надо вам - http://pastebin.com/8MSSmdQQ
0
gimntut
879 / 182 / 15
Регистрация: 18.07.2011
Сообщений: 257
11.02.2012, 23:16 #8
Я не уверен,что всё верно сделал
Сделано на отлично.

По полученным логам не видно, чтобы связь прерывалась.
Сможешь повторить, но с разрывом и восстановлением интернет-канала?
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@REM Пример самологирующегося батника
@if not '%SelfLogFile%'=='' goto :Execute
set SelfLogFile="%~0.log"
echo. >>%SelfLogFile%
echo ----- %DATE% %TIME% ----- >>%SelfLogFile%
prompt $S$SПапка:$S$P$_$S$SВремя:$S$T$_Команда:$S
call "%~0" %* 1>>%SelfLogFile% 2>>&1
exit
 
:Execute
 
start vlc.exe [url]http://neksia.ru:8000/All[/url]
set flag=0
:RELOAD
ping 78.155.218.207 | find "100%%" && call :KillVLC
set /a flag=flag+1
IF %flag%==1 goto RELOAD
IF %flag%==2 start vlc.exe [url]http://neksia.ru:8000/All[/url]
IF %flag%==10 set flag=3
echo %flag%
goto RELOAD
 
:KillVLC
taskkill /F /IM vlc.exe 
set flag=0
exit /b
1
nivs
3 / 3 / 0
Регистрация: 21.10.2011
Сообщений: 50
12.02.2012, 04:04  [ТС] #9
Чудеса - работает, и так, как мне надо!
http://pastebin.com/9CEtMRM5

Вот готовый батник:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
set /a flag = 0
сhcp 1251
 
:RELOAD
 
ping 78.155.218.207 | find "100%%" && call :KillVLC
set /a flag = flag + 1
 
IF %flag% == 1  goto RELOAD
IF %flag% == 2  start vlc.exe [url]http://neksia.ru:8000/Сплин[/url]
IF %flag% == 10 set flag=3
 
goto RELOAD
 
 
:KillVLC
 
taskkill /F /IM vlc.exe 
set flag = 0
exit /b
Если есть ошибки в оптимизации - исправте, я проблем, кроме теоретического переполнения flag, не вижу. Или всё хорошо?


Сделал запуск в фоне через *.vbs:
Visual Basic
1
2
3
4
Dim Shell
Set Shell = CreateObject("WScript.Shell")
Shell.run "radio.bat",0,1
Set Shell = Nothing
Работает так, как мне надо.
Последний вопрос - как вынести IP хоста и путь к потоку в отдельные переменные?
set host = 78.155.218.207 и подстановка %host% в нужное место (замену пути к потоку делал так же) работает некорректно - строки в командной строке перемещаются со страшной скоростью, VLC ничего не проигрывает... Поиграл с синтаксисом и ключами - не помогло.
0
gimntut
879 / 182 / 15
Регистрация: 18.07.2011
Сообщений: 257
12.02.2012, 09:47 #10
Цитата Сообщение от nivs Посмотреть сообщение
Или всё хорошо?
И так сойдёт.
Цитата Сообщение от nivs Посмотреть сообщение
set host = 78.155.218.207 и подстановка %host% в нужное место (замену пути к потоку делал так же) работает некорректно
Показывай, как делал.
Цитата Сообщение от nivs Посмотреть сообщение
строки в командной строке перемещаются со страшной скоростью
Их можно остановить с помощью клавиши Pause.
Цитата Сообщение от nivs Посмотреть сообщение
Поиграл с синтаксисом и ключами - не помогло
Показывай свой синтаксис и лог к нему.

СОВЕТ
Не ставь пробелы вокруг знаков равно в IF и SET. Это одна из причин трудноуловимых ошибок.
1
nivs
3 / 3 / 0
Регистрация: 21.10.2011
Сообщений: 50
12.02.2012, 12:09  [ТС] #11
Всё, отбой, вылечилось. Странно, но с пробелами вокруг "=" и "==" не работает, а без них - работает.
Без пробелов:
скрипт - http://pastebin.com/WPYGiRH9
лог - http://pastebin.com/6QXmDtEJ

С пробелами:
скрипт - http://pastebin.com/DV2mnhmi
лог - http://pastebin.com/8HDDaFSe

В общем, вот рабочий код:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
chcp 1251
set host=78.155.218.207
set stream=http://neksia.ru:8000/Сплин
set /a flag=0
 
:RELOAD
 
ping %host% | find "100%%" && call :KillVLC
set /a flag=flag+1
 
IF %flag%==1  goto  RELOAD
IF %flag%==2  start vlc.exe %stream%
IF %flag%==10 set   flag=3
 
goto RELOAD
 
 
:KillVLC
 
taskkill /F /IM vlc.exe 
set flag=0
exit /b
Большое спасибо за помощь!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2012, 12:09
Привет! Вот еще темы с ответами:

Не могу настроить подключение к терминальному серверу из Интрнета - Администрирование Windows
Проблема такова, что из своей подсети спокойно подключаюсь, а из вне не выходит. Windows Server 2012 R2 стоит на VMware виртуалке, у...

Программа Консультант + постоянно запрашивает подключение к серверу - Администрирование Windows
Привет всем. Помогите разобраться. При попытке запустить программу "Консультант +" на любом компьютере в фирме. Появляется окно...

Отключить подключение по локальной сети при отключении VPN-соединения - Администрирование Windows
Нужно сделать так, что бы при случайном отключении vpn сервера или отключении vpn соединения, подкл. по ток. сети отключилось и не...

Подключение к серверу Ubuntu через PuTTY и выполнение команды - CMD/BAT
Доброго времени суток! Подскажите, можно ли сделать так, чтобы выполнялось подключение к серверу через putty(plink) c запуском...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru