Показать полную графическую версию : Помогите создать батник для проверки пинга и удаленного подключения
Задача такая:
Нужен батник, который бы проверял пинг удаленного компа, если пинг есть - то запуск подключения default.rdp если пинга нет - то повтор всей процедуры.
Пробовал сделать так:
:m1
ping айпишник /l 32 /n 3
if errorlevel 0 start notepad.exe (к примеру)
if errorlevel 1 goto m1
но не работает, блокнот запускается в любом случае, хоть есть пинг хоть нет.
Примерно так:
@echo off
setlocal
set sAddress=%~1
if not defined sAddress exit /b 1
:Repeat
ping.exe -n 1 -w 500 "%sAddress%" >nul && (start "" mstsc.exe "%UserProfile%\Мои документы\Default.rdp" & exit /b 0)
goto :Repeat
P.S. Почему именно «Default.rdp», а не имя/адрес пингуемой машины+параметры «mstsc.exe»?
Э... Как-то даже в голову не пришло. А как это будет выглядеть в таком случае? Пароль сохранять не нужно, айпи и логин только.
Все оказалось гораздо сложнее чем я думал. Собственно где айпи-то прописывать?
Документация:
mstsc.exe /?
Илья Сазонов : Настройка клиента Terminal Services: RDP-файлы (http://www.itcommunity.ru/blogs/sie/archive/2008/10/01/28178.aspx)
Microsoft Windows XP - Mstsc (http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/ts_cmd_mstsc.mspx?mfr=true)
Mstsc (http://technet.microsoft.com/en-us/library/cc753907(WS.10).aspx)
MSTSC - Terminal Server Connection - RDP Remote Desktop Protocol (http://ss64.com/nt/mstsc.html)
Например, так:
ping.exe -n 1 -w 500 "%sAddress%" >nul && (start "" "%systemroot%\system32\mstsc.exe" /v:"%sAddress%" /fullscreen /console & exit /b 0)
и можно сразу после неё и перед «goto :Repeat» добавить:
<nul set /p sTemp=.
для визуализации.
С логином хуже; мне неизвестен способ задать имя пользователя через командную строку. Только *.rdp. Ну, или попробовать такую заглушку: Launch RDP from commandline | Remko Weijnen's Blog (Remko's Blog) (http://www.remkoweijnen.nl/blog/2007/10/17/launch-rdp-from-commandline/) (сам я не пробовал — без надобности).
Поскольку мне не нужны разные имена в терминале, я просто прикрутил в Far Manager'е в User Menu, в подменю, среди прочих сетевых свистелок и перделок утилит такой пункт:
: Remote Desktop on [!.!]
"%systemroot%\system32\ping.exe" -n 1 -w 500 "!.!" >nul && "%systemroot%\system32\mstsc.exe" /v:!.! /fullscreen /console
и вызываю его, установив курсор на имени машины в плагине «Network».
Собственно где айпи-то прописывать? »
В командной строке при вызове пакетного файла, например:
CallTerminal.cmd MyServer
или:
CallTerminal.cmd 192.168.100.100
Вот так все заработало:
@echo off
set sAddress=192.168.xx.xx
if not defined sAddress exit /b 1
:Repeat
ping.exe "%sAddress%" && (start "" mstsc.exe "%UserProfile%\Documents\Default.rdp" & exit /b 0)
goto :Repeat
Спасибо за помощь.
mankiz, в случае непосредственного задания имени/адреса в пакетном файле — как это сделали Вы, строка:
if not defined sAddress exit /b 1
становится лишней. Её можно вообще удалить.
Поторопился отметить "Решено". В случае если пинг есть, все работает нормально. Если поменять адрес на несуществуюший в сети, то попытки пинга идут бесконечно (что и требовалось). Но если адрес правильный, а пинга все равно нет, то несмотря на это запускается подключение и естественно выдает ошибку.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC