ฉันกำลังมองหาคำสั่งย้อนกลับที่แสดงชื่อของอะแดปเตอร์เครือข่ายสำหรับที่อยู่ IP ที่กำหนด
จากทุกสิ่งที่ฉันพยายามมันน่าจะทำงานได้ดีถ้าคุณบอกว่าคุณต้องได้รับข้อมูลนี้จากที่อยู่ IP ที่คุณระบุไว้ในตัวอย่างเท่านั้น
PROMPT แบบโต้ตอบสำหรับที่อยู่ IP เพื่อรับชื่อการเชื่อมต่อเครือข่าย
(ใช้WMIC
และบางชุดFOR
วนtoken
และการdelim
แยกเพื่อรับชื่อการเชื่อมต่อเครือข่ายสำหรับที่อยู่ IP ที่ระบุ)
(ค่าผลลัพธ์จะสะท้อนไปที่หน้าต่างคำสั่งและหน้าต่างกล่องข้อความมันเป็นสคริปต์ชุดงานทั้งหมด แต่สร้างฟังก์ชัน VBS script แบบไดนามิกเพื่อให้กระบวนการสำหรับผู้ที่ต้องการง่ายขึ้น)
@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
ทุกสายการบิน
WINDOWS ดั้งเดิมเฉพาะกับ NETSH ทั้งหมด (ที่อยู่ 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]*"
Windows พื้นเมืองเท่านั้นกับ IPCONFIG การเชื่อมต่อทั้งหมด (ที่อยู่ IPv4 ทั้งหมด)
IPCONFIG | FINDSTR /R "Ethernet* Address.*[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"
การใช้ PCRE2GREP (ต่อ @SalvoF)
ระบุที่อยู่ IP เดียว
netsh interface ipv4 show address | pcre2grep -B2 "192\.168\.2\.4" | FIND /V "DHCP"
ค้นหาที่อยู่ 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"
ค้นหาที่อยู่ IP ทั้งหมด (ล้าง Regex (ต่อ @SalvoF))
netsh interface ip show config | pcre2grep "^[A-Z]|IP.*([0-9]{1,3}(\.|)){4}"
โปรดทราบว่าpcre2grep
ฉันพยายามต่อ @SalvoF [+1]
ตามที่เขาแนะนำ แต่ใช้ .... FIND /V
เพื่อลบบรรทัดด้านบนที่มีอยู่DHCP
ดูเหมือนว่าจะได้รับผลลัพธ์ที่ต้องการตามที่คุณอธิบาย ฉันใช้NETSH
มากกว่าIPCONFIG
เช่นกัน