пакетная заставка или что-то подобное

416
derHugo

Я написал простой пакетный скрипт (который будет преобразован в .exe позже), который проверяет, достигнут ли сервер перед открытием его веб-страницы:

@echo off ping -n 1 -w 1000 10.###.###.1 | find "TTL=" >nul if errorlevel 1 ( msg "%username%" You are not connected via VPN. You have to conect to VPN first! if %ERRORLEVEL% NEQ 0 ( echo You are not connected via VPN. You have to conect to VPN first! ) ) else ( ping -n 1 -w 1000 some.server.name | find "TTL=" >nul if errorlevel 1 (  ping -n 1 -w 1000 192.168.###.### | find "TTL=" >nul if errorlevel 1 ( msg "%username%" Couldn't find requested Server. Please contact the administrator! if %ERRORLEVEL% NEQ 0 ( echo Couldn't find requested Server. Please contact the administrator! ) ) else ( msg "%username%" Connected but using NO-DNS Fallback. Please inform the administrator! if %ERRORLEVEL% NEQ 0 ( echo Connected but using NO-DNS Fallback. Please inform the administrator! ) cmd /c start "" "http://192.168.###.###" ) ) else ( cmd /c start "" "http://some.server.name" )  ) 

Это прекрасно работает и делает то, что должно.

В любом случае, в случае сбоя, когда сервер по какой-то причине не подключен, все равно требуется некоторое время (я ожидал бы 2 секунды, но на самом деле это занимает до 9 секунд), пока пользователь не получит сообщение в качестве обратной связи ... пока он не не знаю, что код делает что-то.

Интересно, есть ли возможность использовать только пакетный режим для отображения какого-то «экрана-заставки» (сообщение / изображение) только во время эхо-запросов, пока он не подключится или не отобразится сообщение об ошибке, позволяющее пользователю знать, что скрипт запущен?

Я говорю только с использованием пакета, потому что, поскольку это всего лишь своего рода «умная» URL-ссылка, я бы не хотел прилагать слишком много усилий, например, с использованием Java или чего-то в этом роде.

0
Почему вы не всегда показываете пользователю сообщение «Работает ...» перед тем, как начинать пинговать, а затем другое, когда закончите с «Успехом» или «Ошибка»? Tomer Godinger 6 лет назад 0
Возможно, но как мне «убить» сообщение? Проблема заключается в том, что если это удастся в течение 2 мс, то все равно будут отображаться сообщения .. но я хочу, чтобы отобразить сообщение или что-то еще только во время проверки соединения derHugo 6 лет назад 0
Ну, это зависит от того, как вы показываете свои сообщения? Tomer Godinger 6 лет назад 0
До сих пор `msg` или (если он не установлен / недоступен) как запасной вариант с использованием` echo`, потому что я заметил, что `msg` недоступен в Windows Home, например derHugo 6 лет назад 0

1 ответ на вопрос

0
derHugo

Я не нашел решения для «Заставки», поэтому мне все равно будет интересно.

Но я нашел обходной путь, который пока подходит, используя -wопцию ping и установив максимальное время ожидания 1 сек. что нормально для пользователя ждать.

Но я все же предпочел бы способ «заставки», если у кого-то есть решение для этого.