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

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

Ответить
Настройки темы
CMD/BAT - [решено] Не всегда отрабатывается условие при использовании rasdial

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


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

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


Здравствуйте.

Для автоматического дозвона в нужное время используется скрипт вида:
Код: Выделить весь код
rasdial имя_соединения логин пароль
if errorlevel 600 (call reconnect.cmd)
exit
Скрипт выполняется через стандартный Планировщик задач Windows.
Дело в том, что условие выполняется несколько первых раз (обычно 2 или вообще 1 раз), а затем игнорируется скриптом, т.е. если мы имеем на выходе команды rasdial номер ошибки 600 и более, то выполняется сразу exit минуя IF. Подозреваю, что виноват крон, хотя не сильно знаком с особенностями переменной ERRORLEVEL, может тут собака порылась? При ручном запуске скрипт работает идеально. Буду благодарен любой помощи.

Система: HP DC7700 Intel Core 2 DUO 6400 2.13 GHz, 2Gb DDR2 RAM, 80 Gb HDD
ОС: Windows XP SP3 (из дополнительного ПО: OpenOffice 3.0.1 и 7zip 4.65)

Отправлено: 13:36, 29-04-2009

 


Moderator


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

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


Цитата hosco:
номер ошибки 600 и более
А почему именно 600 и более?

Альтернативный вариант с командой Ping:
Код: Выделить весь код
:Loop
Ping -n 1 -l 1 ya.ru
If %ErrorLevel% Neq 0 (
  Rasdial имя_соединения логин пароль
  GoTo :Loop
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:49, 29-04-2009 | #2



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

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


Аватара для Maza Faka

Ветеран


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

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


hosco
Попробуйте так:
Код: Выделить весь код
@Echo Off

:_Connect
rasdial имя_соединения логин пароль
If Not %ERRORLEVEL%==0 GoTo :_Connect

-------
Сообщение помогло? Не забудьте нажать на Полезное сообщение


Отправлено: 14:55, 29-04-2009 | #3


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


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

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


Потому что ошибки Dial-Up соединения начинаются с 600 (линия занята, удалённый компьютер не отвечает и т.п.), в частности последний раз была 678-я, при которой условие не сработало (хотя, повторюсь, при ручном запуске срабатывает). Машина не имеет доступа в Интернет, локалхост также пинговать не желательно, да и вообще пинг отпадает.

Цитата Maza Faka:
Попробуйте так: »
По сути это тоже самое, только вид сбоку, можно конечно попробовать, GOTO только на CALL заменить. Намёк на то, что ошибка может не попадать в мой начальный диапазон и нужно делать изначально диапазон отличный от 0, но я в предыдущем сообщении написал, что ошибка 100% попадает в диапазон, но не отрабатывает.

Отправлено: 14:57, 29-04-2009 | #4


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


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

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


А можно как-нибудь всё сделать в одном скрипте? У меня при ошибке вызывается другой скрипт с содержанием:
Код: Выделить весь код
:reconnect
delay 30000
rasdial имя_соединения логин пароль
if %errorlevel% neq 0 goto reconnect
Т.е. в основном файле не нужна задержка (delay.exe самописная программка, т.к. пинг не приветствуется), поэтому сделали таким образом. Так вот вопрос, можно-ли это реализовать в одном скрипте, но чтобы задержка не всегда срабатывала, а только при ошибках?

Отправлено: 10:12, 30-04-2009 | #5


Старожил


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

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


Код: Выделить весь код
rasdial имя_соединения логин пароль
if %errorlevel%==600 (
          call :reconnect
          )
exit

:reconnect
delay 30000
rasdial имя_соединения логин пароль
if %errorlevel% neq 0 goto reconnect
goto :eof
пинг на 127.0.0.1 тоже не приветствуется ?
я дак делаю задержку так
Код: Выделить весь код
ping -n 70 -w 1000 127.0.0.1 > nul
70 - секунды

а еще есть программа sleep если не ошибаюсь.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:01, 30-04-2009 | #6


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


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

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


Да, я выше написал, что любой пинг не приветствуется, в том числе и локалхост, sleep есть только при установленном Ресурс Ките, если я не ошибаюсь, а он только для серверов. Спасибо, так вроде работает.

Отправлено: 14:16, 30-04-2009 | #7


Старожил


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

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


тут написано про паузу, в том числе и про sleep который я имел ввиду.

Отправлено: 16:35, 30-04-2009 | #8


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


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

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


Цитата mitiya:
тут написано »
Спасибо, уже разобрался, видно, что нормальную паузу (не ping) можно реализовать только с помощью сторонних утилит, которые мы и использовали изначально.

Отправлено: 10:16, 04-05-2009 | #9



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] отказ доступа при использовании команды Move tr011_tmn Скриптовые языки администрирования Windows 19 23-07-2021 00:36
[решено] Проблемы с вводом в домен при использовании RIS Shestipaliy Автоматическая установка Windows 2000/XP/2003 5 03-04-2009 21:32
[решено] Ошибка при использовании mysql_real_escape_string() hasherfrog Вебмастеру 7 28-11-2007 14:14
[решено] Глюк форума при использовании Опера 9.21 Angel_19 О сайте и форуме 2 17-09-2007 11:30
[решено] Лецензирование ПО при использовании в терминальном сервере barashihin Лицензирование продуктов Microsoft 1 04-07-2007 15:04




 
Переход