PDA

Показать полную графическую версию : Помогите узнать текущий IP-адрес компьютера в локальной сети в скрипте


NoIZz
15-10-2013, 15:22
и загнать его в переменную

Столько всего перепробывал - не выходит каменный цветочек (((
А время поджимает

Нужно исключительно для BAT/CMD

Спасибо!

Iska
15-10-2013, 16:22
Столько всего перепробывал »
Перечислите, что именно «перепробовали».

Сетей может быть несколько. IP-адресов — тоже.

NoIZz
15-10-2013, 16:55
Отвечаю
поиск тут
нашел много разных - но в одних условиях работают - в других нет
а если например у машины 2 ифейса то скрипты выдают всякую шнягу
а если на 7ке используется 2 ip на интерфейсе?

мне нужен первый ip приоритетного интерфейса

и что бы работало на 7, vista и xp

http://forum.oszone.net/thread-187989.html

Вот это не везде и не у всех работает

Руками в 20 школах (бесплатно - тк благотворительно) настроить почти 1000 хостов - руками - - да еще удаленно - я и мои коллеги повесятся (((

Iska
15-10-2013, 18:56
мне нужен первый ip приоритетного интерфейса »
Что есть «интерфейс», и по каким признакам Вы определяете, что он «приоритетный»?

и что бы работало на 7, vista и xp »
Тогда Вам лучше использовать консольный скрипт WSH, наподобие:
Option Explicit

Dim strComputer

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim objSWbemObjectEx

Dim strIPAddress


strComputer = "."

Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")

For Each objSWbemObjectEx In objSWbemServicesEx.ExecQuery("SELECT IPAddress FROM Win32_NetworkAdapterConfiguration Where IPEnabled = 'True'")
For Each strIPAddress In objSWbemObjectEx.IPAddress
WScript.Echo strIPAddress

Exit For
Next

Exit For
Next

Set objSWbemServicesEx = Nothing
Set objSWbemLocator = Nothing

WScript.Quit 0
— первый встретившийся адрес на первом из включённых адаптеров, в виде:
@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq delims=" %%i in (
`2^>nul cscript.exe //nologo "0001.vbs"`
) do set sIPAddress=%%~i

if defined sIPAddress echo IP Address: [%sIPAddress%]

endlocal
exit /b 0
Хотя, на мог взгляд, проще всё целиком сделать на WSH.

megaloman
15-10-2013, 20:00
@Echo Off
cls

FOR /F "usebackq tokens=2 delims=[]" %%i IN (`Ping -4 -n 1 %computername%`) DO Set Ip=%%i & GoTo :Continue
:Continue
Echo %Ip% Вроде бы работает (проверил на 7 и на xp)
Тестировал на компьютере не в домене.

NoIZz
15-10-2013, 22:00
megaloman, Компы в домене - ip соотвественно ближайшего контроллера - их 3
если делать через %COMPUTERNAME%.%userdnsdomain% - то на 7ке - если включен ipv6 лезет v6й ipшник

NoIZz
15-10-2013, 22:16
FOR /F "usebackq tokens=2 delims=[]" %%i IN (`Ping -4 -n 1 %computername%.%userdnsdomain%`) DO Set IP=%%i & GoTo :Continue
:Continue
так работает
но не под системной учеткой
хотя - это обойдем




© OSzone.net 2001-2012