在 Windows 7 中,我使用命令for /l %i in (1,1,254) do nbtstat -a xxx.xxx.xxx.%i
根据给定的 IP 范围返回主机名。但输出太长且不友好。我该如何改进它以返回看起来更像电子表格的列表,例如:
IP address Host name MAC address xxx.xxx.xxx.1 host-name-01 xx-xx-xx-xx-xx-x1 xxx.xxx.xxx.2 host-name-02 xx-xx-xx-xx-xx-x2 xxx.xxx.xxx.3 host-name-03 xx-xx-xx-xx-xx-x3
?
我见过| list xxx
末尾带有类似内容的命令,但我对该特定语法并不十分熟悉。
答案1
您可能需要将输出中的“UNIQUE”更改为本地等效值。
@echo off
set PREFIX=127.0.0
setlocal enabledelayedexpansion
for /l %%i in (1,1,254) do (
nbtstat -a %PREFIX%.%%i > %TEMP%\info.txt
for /F "tokens=4" %%a in ('findstr "MAC" %TEMP%\info.txt') do set MAC=%%a
for /F "tokens=1" %%a in ('findstr /R /C:"<00> UNIQUE " %TEMP%\info.txt' ) do set HOSTNAME=%%a
echo %PREFIX%.%%i;%MAC%;%HOSTNAME%
)