Sto cercando un comando inverso che visualizzi il nome della scheda di rete per un determinato indirizzo IP.
Sulla base di tutto ciò che ho provato, questo dovrebbe funzionare sembra che tu abbia bisogno di ottenere queste informazioni SOLO dall'indirizzo IP che hai già specificato nel tuo esempio.
PROMPT INTERATTIVO PER L'INDIRIZZO IP PER OTTENERE IL NOME CONNESSIONE RETE
(Utilizzare WMIC
e alcuni FOR
loop batch token
e delim
analisi per ottenere il nome della connessione di rete per un indirizzo IP specificato.)
(Il valore del risultato farà eco a una finestra di comando e una finestra di messaggio. È tutto uno script batch ma crea dinamicamente alcune funzioni di script VBS per semplificare il processo per chiunque ne abbia bisogno.)
@ECHO ON
:SetTempFiles
SET tmpIPaddr=%tmp%\~tmpipaddress.vbs
SET tmpNetConName1=%tmp%\~tmpNetConName1.txt
SET tmpNetConName2=%tmp%\~tmpNetConName2.txt
SET tmpBatFile=%tmp%\~tmpBatch.cmd
SET tmpVBNetCon=%tmp%\~tmpVBNetCon.vbs
IF EXIST "%tmpIPaddr%" DEL /F /Q "%tmpIPaddr%"
IF EXIST "%tmpNetConName1%" DEL /Q /F "%tmpNetConName1%"
IF EXIST "%tmpNetConName2%" DEL /Q /F "%tmpNetConName2%"
IF EXIST "%tmpBatFile%" DEL /Q /F "%tmpBatFile%"
IF EXIST "%tmpVBNetCon%" DEL /Q /F "%tmpVBNetCon%"
:InputBox
SET msgboxTitle=IP ADDRESS
SET msgboxLine1=Enter the IP address to get its Windows connection name
>"%tmpIPaddr%" ECHO wsh.echo inputbox("%msgboxLine1%","%msgboxTitle%")
FOR /F "tokens=*" %%N IN ('cscript //nologo "%tmpIPaddr%"') DO CALL :setvariables %%N
GOTO EOF
:setvariables
SET IPAddress=%~1
FOR /F "USEBACKQ TOKENS=3 DELIMS=," %%A IN (`"WMIC NICCONFIG GET IPADDRESS,MACADDRESS /FORMAT:CSV | FIND /I "%IPAddress%""`) DO (SET MACAddress=%%~A)
FOR /F "USEBACKQ TOKENS=3 DELIMS=," %%B IN (`"WMIC NIC GET MACADDRESS,NETCONNECTIONID /FORMAT:CSV | FIND /I "%MACAddress%""`) DO ECHO(%%~B>>"%tmpNetConName1%"
::: Parse Empty Lines
FINDSTR "." "%tmpNetConName1%">"%tmpNetConName2%"
::: Build Dynamic Batch with ECHO'd Network Connection Value
FOR /F "tokens=*" %%C IN (%tmpNetConName2%) DO ECHO ECHO %%~C>>"%tmpBatFile%"
IF NOT EXIST "%tmpBatFile%" GOTO :NullExit
START "" "%tmpBatFile%"
::: Build Dynamic VBS with Message Box Network Connection Value
FOR /F "tokens=*" %%C IN (%tmpNetConName2%) DO (SET vbNetconName=%%~C)
ECHO msgbox "%vbNetconName%",0,"%vbNetconName%">"%tmpVBNetCon%"
START /B "" "%tmpVBNetCon%"
EXIT /B
:NullExit
ECHO msgbox "Cannot find MAC Address, check to confirm IP Address was correct.",0,"Invalid IP">"%tmpVBNetCon%"
START /B "" "%tmpVBNetCon%"
EXIT /B
TUTTI I ONE-LINER
FINESTRE NATIVE SOLO CON NETSH TUTTE LE INTERFACCE (TUTTI GLI INDIRIZZI IPv4)
NETSH INT IP SHOW CONFIG | FINDSTR /R "Configuration for interface.* Address.*[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"
FINESTRE NATIVE SOLO CON IPCONFIG TUTTE LE INTERFACCE (TUTTI GLI INDIRIZZI IPv4)
IPCONFIG | FINDSTR /R "Ethernet* Address.*[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"
USANDO PCRE2GREP (per @SalvoF)
INDIRIZZO IP UNICO SPECIFICATO
netsh interface ipv4 show address | pcre2grep -B2 "192\.168\.2\.4" | FIND /V "DHCP"
TROVA TUTTI GLI INDIRIZZI IP
netsh interface ip show config | pcre2grep -B2 ^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$ | FIND /V "DHCP" | FIND /V "Gate" | FIND /V "Metric" | FIND /V "Subnet"
TROVA TUTTI GLI INDIRIZZI IP (Cleaned Up Regex (per @SalvoF))
netsh interface ip show config | pcre2grep "^[A-Z]|IP.*([0-9]{1,3}(\.|)){4}"
Si noti che l' pcre2grep
ho provato è per @SalvoF [+1]
come ha suggerito, ma usando .... FIND /V
per rimuovere la riga sopra contenente DHCP
sembra ottenere l'output desiderato come descritto. Ho usato NETSH
piuttosto che IPCONFIG
pure.