Показать полную графическую версию : [решено] использовать %ip адрес% вместо %computername%
Pinguine
24-05-2011, 17:24
Помогите разобраться
В настоящее время для запуска bat-файлов используется переменная %computername%.
В автозагрузке компьютера прописана команда на запуск \\linux\disk\%computername%\1.bat
В \\linux\disk\ созданы соответственно папки с именами компьютеров. В результате каждый компьютер получает свой bat-файл. Возникла острая необходимость сменить данную переменную на ip адрес. Т.е. чтобы bat-файлы запускались в зависимости от ip адреса компьютера.
Возможно ли такое?
Petya V4sechkin
24-05-2011, 17:40
Pinguine, воспользуйтесь фильтрами (http://tools.oszone.net/Vadikan/faq.html#filters) по названию темы по ip
http://oszone.net/user_img/050214130343/filters.png
Результат (http://forum.oszone.net/forumdisplay.php?f=102&filter_string=%20ip&filter_by=title)
Pinguine
24-05-2011, 19:07
Первым делом воспользовался фильтром. К сожалению ответа на свой вопрос не нашел. Так же просматривая темы не получил даже намека на то как решить мой вопрос.
Morpheus
24-05-2011, 20:30
Pinguine, [решено] Как определить IP и записать его в переменную? (OS: Windows Vista) (http://forum.oszone.net/thread-140814.html)
Foreigner
24-05-2011, 21:51
Pinguine,
На сколько я понял вам нужно определить системную или пользовательскую переменную со значением ip локального компьютера? Если ip-адреса в вашей сети не меняются то можно жестко определить данную переменную в каждом компьютере. Т.е. прописать в реестре. Иначе прописывать в автозагрузку батник, который определяет ip и запускает батник из нужной папки. Например так:
@echo off
setlocal
:: Можно так
:: for /f "tokens=*" %%i in (' ipconfig ') do (
::
:: for %%j in ( %%i ) do set "ip=%%j"
::
:: )
:: Но, имхо, лучше так:
for /f "tokens=*" %%i in (' netsh interface ip show ipaddress ') do (
for %%j in ( %%i ) do set "ip=%%j"
)
\\linux\disk\%ip%\1.bat
Smith_Wesson
25-05-2011, 13:05
to Foreigner,
for /f "tokens=*" %%i in (' ipconfig ') do (
::
:: for %%j in ( %%i ) do set "ip=%%j"
::
:: )
ваш батник вытягивает только последнюю строку (ipconfig) т.е. адрес шлюза. А как вытянуть непосредственно IP-адрес . . . . . . . . . . . .???
megaloman
25-05-2011, 13:50
@Echo Off
FOR /F "usebackq tokens=2 delims=[]" %%i IN (`ping %Computername% -n 1 -4`) DO if not "%%i"=="" Set ip=%%i
Echo %ip%
Smith_Wesson
25-05-2011, 17:56
"usebackq tokens=2 delims=[]" »
не пойму, к чему это?
Smith_Wesson
26-05-2011, 11:39
Понял в чём дело - у меня, почему-то заработало только в таком виде:
(`ping.exe %Computername% -n 1`)
т.е. нужно было прописывать как ping.exe - и можно, кстати без "-4" - тоже работает.
megaloman
26-05-2011, 14:10
и можно, кстати без "-4" - тоже работает - и слава богу, но, например, в Windows 7 вид IP будет иным. -4 отвечает за принудительное использование протокола IPv4. В Win xp этот ключ не мешает. Ping.exe наверное понадобился, потому что с этим именем Ping существуют и другие исполнимые файлы, которые система обнаруживает ранее, например, ping.bat. Раз такое дело, я бы вообще посоветовал указать полное имя.
Smith_Wesson
26-05-2011, 17:06
to megaloman, - спасибо! Всё работает отлично!
@for /f "tokens=2" %%i in ('netsh interface ip show ipaddress 18') do @(set ip_adress=%%i & goto kokoko)
:kokoko
@set ip_adress=%ip_adress: =%
@echo.%ip_adress%
работает на win 7 x64
18 - номер интерфейса IP-адрес которого нужно узнать, можно посмотреть командой netsh interface ip show ipaddress
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.