Имя: Пароль:
IT
 
Как зациклить выполнение скрипта rasdial? {Решен}
0 Гений 1С
 
гуру
29.08.09
10:01
Написал небольшой скрипт:

:again
rasdial SkyLink
goto again

Но когда я запускаю окно, даже если оно свернуто, курсор начинает дрожать, очевидно из-за выполнения CMD в цикле.

Может быть, переписать на JS-файл, тогда мигать не будет.
Можно еще как-то паузу в cmd-файл вставлять?

подскажите, как паузу и вызов задания в JS выполнять?

просто у меня в типовых настройках соединения ограниченное число попыток, иногда прерывается на ночь работа.

А в планировщике неудобно - мне надо не всегда восстанавливать соединение а только когда я запущу пакетник.
1 ДенисЧ
 
29.08.09
10:05
WShell.Sleep
2 Гений 1С
 
гуру
29.08.09
10:16
Сделал так:
while(true) {
   var Myshell = new ActiveXObject("WScript.Shell");
   Myshell.Run("rasdial SkyLink",0,1);
}

Окно запуска не выводится, но курсор мигает... Как избавиться от мигания курсора?
3 Гений 1С
 
гуру
29.08.09
10:17
(1) Выдает ошибку, что нет такого метода:
while(true) {
   var Myshell = new ActiveXObject("WScript.Shell");
   Myshell.Run("rasdial SkyLink",0,1);
   Myshell.Sleep(10);
}
4 ДенисЧ
 
29.08.09
10:19
Ну опечатался я...
WScript.Sleep

Или тебя гугель ещё не разбанил?
5 Гений 1С
 
гуру
29.08.09
10:20
(4) поясни плиз по человечески. хотя все равно важнее вопрос про мигание курсора
6 Гений 1С
 
гуру
29.08.09
10:25
Ах да, задержка работает: WScript.sleep (200);
200 - это в чем, в милисекундах? т.е. 1000 - это 1 секунда?
7 ДенисЧ
 
29.08.09
10:25
Как мигание убрать - я не знаю.
(6) Да.
8 Гений 1С
 
гуру
29.08.09
10:26
а почему окно JS невидимо, только можно убить его в WScript? можно как-то показать окно приложения JS?
9 ДенисЧ
 
29.08.09
10:27
(8) У него нет окна :-)
Как ты его запускаешь?
10 Гений 1С
 
гуру
29.08.09
10:29
(9) Просто из тотал командера запускаю файл JS. А как мне его тогда прервать.
ПОставил задержку в 5 минут, по идее этого достаточно, чтобы восстанавливать коннект..
11 smaharbA
 
29.08.09
10:30
var Myshell = new ActiveXObject("WScript.Shell");
while(true) {
  rez=Myshell.Run("ping -n 1 www.yandex.ru");
  if (rez != 0) {
      Myshell.Run("rasdial SkyLink",0,1);
      }
  Myshell.Sleep(1000);
}
12 smaharbA
 
29.08.09
10:30
вернее

var Myshell = new ActiveXObject("WScript.Shell");
while(true) {
 rez=Myshell.Run("ping -n 1 www.yandex.ru",0,true);
 if (rez != 0) {
     Myshell.Run("rasdial SkyLink",0,true);
     }
 Myshell.Sleep(1000);
}
13 ДенисЧ
 
29.08.09
10:31
(10) Набери cscript твой.js
14 smaharbA
 
29.08.09
10:46
(10)

var Myshell = new ActiveXObject("WScript.Shell");
while(true) {
 rez=Myshell.Run("ping -n 1 www.yandex.ru");
 if (rez != 0) {
     Myshell.Run("rasdial SkyLink",0,1);
     }
 else {
     WScript.Quit();
     }
 Myshell.Sleep(1000);
}
15 Megas
 
29.08.09
10:48
(0) Ping 127.0.0.1 -(не помню параметр ) число раз ... 1 пинг = 1 секунда =)
16 Гений 1С
 
гуру
29.08.09
10:53
всем пасиба...

rasloop.js:

var Myshell = new ActiveXObject("WScript.Shell");
while(true) {
   rez=Myshell.Run("ping -n 1 www.yandex.ru",0,true);
   if (rez != 0) {
        Myshell.Run("rasdial SkyLink /DISCONNECT",0,true);
        Myshell.Run("rasdial SkyLink",0,true);
   }
   WScript.sleep (1*60*1000);
}

rasloop.cmd:
cscript rasloop.js

Таперича бы еще как нибудь иконку у запущенного приложения rasloop.cmd поменять, чтобы было видно что это коннектор.

Подскажите еще один вопрос.
JS будет ждать завершения команды, да. 0, true - это невидимое и ждать завершения, так?
17 ДенисЧ
 
29.08.09
10:54
Ярлык создай и меняй в нём икону, как хочешь
18 Гений 1С
 
гуру
29.08.09
10:57
(17) и что, иконка приложения тоже будет меняться? счас попробую
19 Гений 1С
 
гуру
29.08.09
10:58
(17) Спасибо, получилось...
20 Гений 1С
 
гуру
29.08.09
13:57
Окончательно:

var Myshell = new ActiveXObject("WScript.Shell");
while(true) {
   var d = new Date();
   var nMonth = d.getMonth()+1;
   var nDate = d.getDate();
   var nHours = d.getHours();
   var nMinutes = d.getMinutes();
   var nSeconds = d.getSeconds();
   var nMilliseconds = d.getMilliseconds();

   // YYYY-MM-DD (HH.NN.SS);
   var sTimeStamp = ''
   +d.getFullYear()+'-'
   +((nMonth<10)?"0"+nMonth: nMonth)+'-'
   +((nDate<10) ? "0"+nDate : nDate)+' ('
   +((nHours<10) ? "0"+nHours : nHours)+'.'
   +((nMinutes<10) ? "0"+nMinutes : nMinutes)+'.'
   +((nSeconds<10) ?
   "0"+nSeconds : nSeconds)+')';


   rez=Myshell.Run("ping -n 1 www.yandex.ru",0,true);
   if (rez != 0) {

        WScript.Echo(sTimeStamp + "   offline, try to reconnect");
        Myshell.Run("rasdial SkyLink /DISCONNECT",0,true); //Disconnect
        Myshell.Run("rasdial SkyLink mobile mobile",0,true); //Connect with login & password
        WScript.Echo("Reconnected");
   } else {
       WScript.Echo(sTimeStamp + "   test connection - OK");
   
       WScript.sleep (3*60*1000); //wait a minutes for next try
   }
}
21 Ковычки
 
29.08.09
14:23
(20) теперь сделай защиту от двойного и более запуска
22 Гений 1С
 
гуру
29.08.09
15:29
(21) да ну нах, я и так вижу иконку запущенного приложения
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан