Показать полную графическую версию : [решено] вычисление айпи через батник
Darkar25
06-09-2017, 20:13
как-то раз я нашел такую шняжку...она крч пытается найти айпи...но она ищет совершенно не то что нужно...
вот 2 скрина и код...
на 1 скрине написано то что он ищет и то что мне нужно
на втором скрине то что мы видим при запуске батника
@Echo Off
chcp 437 >nul
FOR /F "tokens=2 delims=:" %%a in ('ipconfig ^| find "Gateway"') do set _IP=%%a
chcp 866 >nul
echo "%_IP%"
pause
Darkar25, Вы даже не то выделили, что он ищет.
https://i.imgur.com/FTB6022.png
На самом деле он сначала находит то, что отмечено жёлтым, и присваивает его переменной окружения _IP, а затем находит то, что отмечено голубым, и переписывает значение переменной окружения _IP новым найденным значением.
У Вас несколько сетевых подключений. Какой из IP4-адресов Вам нужен?
как-то раз я нашел такую шняжку »
«Как-то раз нашёл» — это взял в соседней теме (http://forum.oszone.net/post-2763107.html#post2763107) :)?
Darkar25
06-09-2017, 20:38
Цитата Darkar25:
как-то раз я нашел такую шняжку »
«Как-то раз нашёл» — это взял в соседней теме ?
в соседней теме?возможно...........
У Вас несколько сетевых подключений. Какой из IP4-адресов Вам нужен? »
верхний
megaloman
07-09-2017, 10:34
Darkar25, Вы определитесь, что Вам нужно: адрес шлюза или интерфейса? То, что Вы показали, ищет шлюз ("Gateway"), причём последний из всех интерфейсов.
Если надо первый Ip-адрес, то:@Echo Off
CLS
chcp 437 >nul
FOR /F "tokens=1* delims=:" %%a in ('ipconfig ^| find "IPv4 Address"') do set _IP=%%b &GoTo :Continue
:Continue
FOR /F "tokens=*" %%b in ("%_IP%") do set _IP=%%b
chcp 866 >nul
Echo %_IP%
PAUSE
Второй For добавлен для того, чтобы убрать лидирующий пробел в Ip -адресе. Возможно, это Вам помешает.
megaloman, интерфейса. То, что на его скриншоте зелёненьким обведено. Причём, я бы не задавался порядком, а всё же ориентировался на имя соединения что ли.
megaloman
07-09-2017, 12:19
Если из свойств сети в свойствах конкретного сетевого соединения, скопировать наименование интерфейса, например у меня
"Сетевое подключение Intel(R) PRO/Wireless 3945ABG", то можно так:@Echo Off
CLS
FOR /F "tokens=2 delims={}" %%a in ('wmic NICCONFIG list ip ^| find "Сетевое подключение Intel(R) PRO/Wireless 3945ABG"') Do set "_IP=%%~a"
Echo %_IP%
PAUSE
Не знаю, что будет, если на одном интерфейсе несколько IP.
Не знаю, что будет, если на одном интерфейсе несколько IP. »
Дык, задайте и посмотрите ;). В принципе, такое в жизни простого пользователя — достаточно большая редкость.
megaloman
07-09-2017, 12:32
Iska, а может хватит обычного пинга, по видимому, надо получить IP основного сетевого интерфейса @Echo Off
CLS
FOR /F "tokens=2 delims=[]" %%b in ('ping -4 -n 1 %ComputerName%') Do If Not "%%a"=="" (set _IP=%%b &GoTo :Continue)
:Continue
Echo %_IP%
PAUSE
Дык, задайте и посмотрите » :clever-ma- откровенно ленюсь, так как непонятна задача в целом, зачем это затевается.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.