PDA

Показать полную графическую версию : Помогите создать батник для проверки пинга и удаленного подключения


mankiz
08-11-2010, 15:28
Задача такая:
Нужен батник, который бы проверял пинг удаленного компа, если пинг есть - то запуск подключения default.rdp если пинга нет - то повтор всей процедуры.
Пробовал сделать так:
:m1
ping айпишник /l 32 /n 3
if errorlevel 0 start notepad.exe (к примеру)
if errorlevel 1 goto m1
но не работает, блокнот запускается в любом случае, хоть есть пинг хоть нет.

Iska
08-11-2010, 16:14
Примерно так:
@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»?

mankiz
08-11-2010, 17:21
Э... Как-то даже в голову не пришло. А как это будет выглядеть в таком случае? Пароль сохранять не нужно, айпи и логин только.
Все оказалось гораздо сложнее чем я думал. Собственно где айпи-то прописывать?

Iska
08-11-2010, 18:37
Документация:
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

mankiz
09-11-2010, 07:28
Вот так все заработало:
@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

Спасибо за помощь.

Iska
09-11-2010, 11:02
mankiz, в случае непосредственного задания имени/адреса в пакетном файле — как это сделали Вы, строка:
if not defined sAddress exit /b 1
становится лишней. Её можно вообще удалить.

mankiz
10-11-2010, 07:46
Благодарю за уточнение.

mankiz
12-11-2010, 06:52
Поторопился отметить "Решено". В случае если пинг есть, все работает нормально. Если поменять адрес на несуществуюший в сети, то попытки пинга идут бесконечно (что и требовалось). Но если адрес правильный, а пинга все равно нет, то несмотря на это запускается подключение и естественно выдает ошибку.




© OSzone.net 2001-2012