Tôi đang tìm kiếm một lệnh đảo ngược hiển thị tên của bộ điều hợp mạng cho một địa chỉ IP nhất định.
Dựa trên tất cả mọi thứ tôi đã thử, điều này sẽ hoạt động có vẻ như bạn nói rằng bạn cần lấy thông tin này CHỈ từ địa chỉ IP mà bạn đã chỉ định trong ví dụ của mình.
KHUYẾN MÃI TƯƠNG TÁC CHO ĐỊA CHỈ IP ĐỂ NHẬN TÊN KẾT NỐI MẠNG
(Sử dụng WMIC
và một số FOR
vòng lặp token
và delim
phân tích cú pháp hàng loạt để lấy tên kết nối mạng cho một địa chỉ IP được chỉ định.)
(Giá trị kết quả sẽ lặp lại với cửa sổ lệnh và cửa sổ hộp thông báo. Đó là tất cả tập lệnh bó nhưng tự động xây dựng một số chức năng tập lệnh VBS để đơn giản hóa quy trình cho bất kỳ ai cần.)
@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
TẤT CẢ MỘT NGƯỜI
CỬA SỔ TỰ NHIÊN CHỈ VỚI NETSH TẤT CẢ CÁC INTERFACES (TẤT CẢ CÁC ĐỊA CHỈ 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]*"
CỬA SỔ TỰ NHIÊN CHỈ VỚI IPCONFIG TẤT CẢ CÁC INTERFACES (TẤT CẢ CÁC ĐỊA CHỈ IPv4)
IPCONFIG | FINDSTR /R "Ethernet* Address.*[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"
SỬ DỤNG PCRE2GREP (mỗi @SalvoF)
ĐỊA CHỈ IP SINGLE
netsh interface ipv4 show address | pcre2grep -B2 "192\.168\.2\.4" | FIND /V "DHCP"
TÌM TẤT CẢ CÁC ĐỊA CHỈ 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"
TÌM TẤT CẢ CÁC ĐỊA CHỈ IP (Regex đã dọn sạch (mỗi @SalvoF))
netsh interface ip show config | pcre2grep "^[A-Z]|IP.*([0-9]{1,3}(\.|)){4}"
Xin lưu ý rằng pcre2grep
tôi đã thử là theo @SalvoF [+1]
như anh ấy đề xuất nhưng sử dụng .... FIND /V
để xóa dòng ở trên có DHCP
vẻ để có được đầu ra mong muốn như bạn mô tả. Tôi đã sử dụng NETSH
chứ không phải IPCONFIG
là tốt.