Получить IP-адрес Ethernet, если его нет, а затем получить его от адаптера WIFI, используя пакетный скрипт - PullRequest
0 голосов
/ 29 августа 2018

У меня есть пакетный скрипт, который получает IP-адрес компьютера и, если его нет, извлекает IP-адрес адаптера WIFI. Он отлично работает для адаптера Ethernet, однако, когда он находит для адаптера WIFI, он работает в некоторых системах, но не работает на другие, как я обнаружил, в разных системах имена адаптеров WIFI различаются. Я не очень разбираюсь в пакетных сценариях. Вот сценарий, который я пробовал.

@echo off
setlocal enabledelayedexpansion
::just a sample adapter here:
set "adapter=Ethernet adapter Ethernet"
set adapterfound=false
echo Network Connection Test
echo %new%
for /f "usebackq tokens=1-2 delims=:" %%f in (`ipconfig`) do (
    set "item=%%f"
    if /i "!item!"=="!adapter!" (
        echo found
        set adapterfound=true
    ) else if not "!item!"=="!item:IPv4 Address=!" if "!adapterfound!"=="true" (
        set _IPaddr=%%g
        echo Your IP Address is: %%g
        goto :break
        rem set adapterfound=false
        rem echo not found
    )
    rem echo adapterfound
)

:break
if "!adapterfound!"=="false"  (

    :: sometimes I get another name like "adapter=Wireless LAN adapter Wi-Fi 2"

    set "adapter=Wireless LAN adapter Wireless Network Connection"
    set adapterfound=false
    echo Network Connection Test
    for /f "usebackq tokens=1-2 delims=:" %%f in (`ipconfig`) do (
        set "item=%%f"
        if /i "!item!"=="!adapter!" (
            echo found
            set adapterfound=true
        ) else if not "!item!"=="!item:IPv4 Address=!" if "!adapterfound!"=="true" (
            set _IPaddr=%%g
            echo Your IP Address of WIFI is: %%g
            set adapterfound=false
        )
    )
)
for /f "tokens=* delims= " %%a in ("%_IPaddr%") do set _IPaddr=%%a
echo %_IPaddr%

Ответы [ 3 ]

0 голосов
/ 29 августа 2018

Использование WMIC:

@echo off

for /f "skip=1 tokens=1 delims={," %%a in ('wmic nicconfig where "IPEnabled  = True" get ipaddress ^| findstr "."') do echo %%~a
0 голосов
/ 29 августа 2018

Вы можете попробовать этот пакетный скрипт:

@echo off
Title Get (LAN ,Public) (IP) and MAC Addresses by Hackoo 2017
mode con cols=80 lines=5 & Color 9E
echo( & echo(
echo   Please Wait a While ... Searching for (LAN ,Public)(IP) and MAC addresses ...
Set "LogFile=%~dpn0.txt"
@for /f "delims=[] tokens=2" %%a in ('ping -4 -n 1 %ComputerName% ^| findstr [') do (
    set "LAN_IP=%%a"
)

for /f "tokens=2 delims=: " %%A in (
  'nslookup myip.opendns.com. resolver1.opendns.com 2^>NUL^|find "Address:"'
) Do set ExtIP=%%A


@For /f %%a in ('getmac /NH /FO Table') do  (
    @For /f %%b in ('echo %%a') do (
        If /I NOT "%%b"=="N/A" (
            Set "MY_MAC=%%b"
        )
    )
)
    Cls
    echo(
    echo                My Private LAN IP       : %LAN_IP%
    echo                My External Public IP   : %ExtIP%
    echo                MAC Address             : %MY_MAC%

(
    echo My Private LAN IP      : %LAN_IP%
    echo My External Public IP  : %ExtIP%
    echo MAC Address            : %MY_MAC%

)>"%LogFile%"
Timeout /T 5 /NoBreak>nul
Start "" "%LogFile%"
0 голосов
/ 29 августа 2018

Пожалуйста, попробуйте:

@echo off
setlocal enabledelayedexpansion
for /f "tokens=2,3 delims={,}" %%a in ('"wmic nicconfig where IPEnabled="True" get DefaultIPGateway /value | find "I" "') do set gate_test=%%~a
set gate_test=!gate_test: =!
for /f "tokens=1-3 delims=^." %%i in ("!gate_test!") do set range=%%i.%%j.%%k
for /f "tokens=1,2 delims=:" %%l in ('ipconfig ^| findstr IPv4') do (
   set ip=%%m
   set ip=!ip: =!
for /f "tokens=1-3 delims=^." %%n in ("!ip!") do set iprange=%%n.%%o.%%p
if !iprange! == !range! set ipaddress=!ip!
)
)
echo My IP Address is !ipaddress!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...