|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как сделать проверку соединения с выводом результата в [ msg * text] |
|
CMD/BAT - [решено] Как сделать проверку соединения с выводом результата в [ msg * text]
|
![]() Старожил Сообщения: 177 |
Проверка соединения с другим компьютером
пока нет соединения с ip 10.0.0.5 надо повторять проверку снова и снова, пока соединение не появится. Если пинг удачный, тогда показать сообщение и желательно бы сразу встроить сюда, что бы я ввёл t и вашь скрипт сразу начал работать. |
|
Отправлено: 01:27, 01-03-2012 |
Новый участник Сообщения: 29
|
Профиль | Отправить PM | Цитировать |
Последний раз редактировалось WoW, 02-03-2012 в 02:00. Отправлено: 01:14, 02-03-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Старожил Сообщения: 177
|
Профиль | Отправить PM | Цитировать WoW, Почти но не так, и вашь батник не сможет долго выполнять свою задачу, т.к произойдёт лаг и он просто завершится(
так будет намного проще, быстрее и меньше нагрузки на комп... просто мне нужно этот скрипт :sendmsg >nul ping 10.0.0.5 -n 1 -w 100 && (msg * Соединение установлено & exit /b) call :sendmsg надо что бы скрипт не зацикливался, а давал мне возможность во время исполнения команды t вводить, другие команды. так не прокатывает, он зацикливается на одном и не даёт мне ввести другой параметр.... @echo off :end SetLocal Set /P "i= " If /I "%i%"=="t" (call :sendmsg) goto :end :sendmsg >nul ping 10.0.0.5 -n 1 -w 100 && (msg * Соединение установлено & exit /b) call :sendmsg так Цитата:
мой скрипт start.bat запускает второй батник sendmsg.bat, который у меня работает в фоновом режиме не открывая нового окна, а когда появляется связь с компьютером 10.0.0.5 тогда выполняет команду msg * Соединение установлено. и выходит из функции & Exit /b И всё это не мешает работать первому start.bat и не зацикливается на одном и у меня не пропадает возможность ввода, других комманд.... Добавлено: Если это никак нельзя сделать в одном, тогда следующий вопрос. Как сделать, что бы мой батник, создавал второй батник, например в папке %temp% и что бы мой скрипт, выполнял его из папки %temp% когда я выберу параметр в консоле t |
|
Последний раз редактировалось root221, 02-03-2012 в 02:46. Отправлено: 02:24, 02-03-2012 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать root221, Вы что, интерпретатор команд на cmd пытаетесь написать, что ли?
|
Отправлено: 03:01, 02-03-2012 | #4 |
![]() Старожил Сообщения: 177
|
Профиль | Отправить PM | Цитировать Iska, ахаха) Нет, я много веть не прошу)
|
|
Отправлено: 09:27, 02-03-2012 | #5 |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать Цитата root221:
Но с помощью вот такого нехитрого трюка можно сделать псевдо-"многозадачность", запуская несколько процессов одного и того же скрипта внутри самого себя. Первый - ожидает команды от пользователя и передает их, второй - получает команды от первого, обрабатывает и передает управление на нужную метку. А там - смотря по ситуации, в случае с командой "t" - запускает в фоне третий процесс, который пингует нужный хост, в случае с командой "test" - просто выводит надпись, не стартуя ещё одного процесса. @Echo Off :: Назначаем временный файл, с помощью которого будут передаваться команды Set CmdFile=%Temp%\cmd_%Random%.tmp :: Проверка на запуск второй копии If "%SelfStart%"=="" (GoTo ControlThread) :Main :: Если команды от первой копии ещё не поступало, ждем в цикле If Not Exist "%CmdFile%" Ping -n 3 127.0.0.1>nul& GoTo Main Set /P UserCmd=<"%CmdFile%" :: Проверка на существование метки, перенаправление Find /I ":[%UserCmd%]" "%~nx0">nul&&( Del "%CmdFile%" GoTo [%UserCmd%] )||( Del "%CmdFile%" Echo Command not found GoTo Main ) :: Запускаем ещё одну копию скрипта, обрабатывающую команды от первой :ControlThread If "%SelfStart%"=="" ( Set SelfStart=yes Start /B "" "%~nx0" GoTo WaitUserUserCmds ) :: Ждем команду от пользователя, перенаправляем второй копии :WaitUserUserCmds Cls Echo Enter your command: If Not "%UserCmd%"=="" (Echo ^> %UserCmd%) Set UserCmd= Set /P UserCmd= If Not "%UserCmd%"=="" Echo %UserCmd%>"%CmdFile%" GoTo WaitUserUserCmds :: Здесь находятся метки-"команды", каждая после завершения работы возвращает управление на main :[test] :: Тестовая команда для проверки Echo. Echo TEST Echo. GoTo Main :[t] :: Создаем временный батник, который и запускаем внутри того же окна в фоне, третьим процессом :: Можно бы было сделать проверку на повторный ввод команды, если уже запущена, но лень играться с флагами >"%Temp%\sendmsg.cmd" ( Echo @echo off Echo :sendmsg Echo ^>nul ping 10.0.0.5 -n 1 -w 100 ^&^& ^(msg * Соединение установлено ^& exit /b^) Echo call :sendmsg ) Start /B "" "%Temp%\sendmsg.cmd" Echo Мониторинг доступности 10.0.0.5 запущен GoTo Main |
|
Последний раз редактировалось Anonymоus, 02-03-2012 в 13:25. Отправлено: 11:01, 02-03-2012 | #6 |
![]() Старожил Сообщения: 177
|
Профиль | Отправить PM | Цитировать Anonymоus,
Вашь вариант разберу позже и отвечу вам, всё ли вы мне сделали так, как хотелось бы. Вот вариант, который вполне справляется с моей задачей.... |
Отправлено: 21:20, 02-03-2012 | #7 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] как сделать проверку файла (файлов) через cmd | CaHeK_pk | Скриптовые языки администрирования Windows | 10 | 30-09-2011 20:51 | |
Разное - как сделать чтоб перед экраном загрузчика (Logonui) вышла картинка | rushen | Оформление Windows XP | 9 | 22-08-2010 14:14 | |
Задача - сделать возможность бекапа перед установкой системы через RIS | Shestipaliy | Автоматическая установка Windows 2000/XP/2003 | 3 | 08-04-2009 12:43 | |
как сделать автоконект при потери соединения в VPN? | EndErr | Microsoft Windows NT/2000/2003 | 5 | 30-11-2007 09:01 | |
Как сделать так, чтобы ДОС программа загружалась перед Win9x | Guest | Microsoft Windows 95/98/Me (архив) | 6 | 12-07-2004 09:22 |
|