Существует команда arp .В нем перечислены адреса, которые известны компьютеру.Что в основном означает, что «произошел некоторый обмен данными с этим адресом с момента последнего сброса (явный сброс или перезагрузка)».Но он не говорит вам, доступен ли адрес в данный момент.Таким образом, чтобы получить достижимые адреса, вы должны удалить кэш arp, установить связь с каждым адресом (достаточно ping) и затем показать кеш:
@echo off
arp -d
(for /l %%i in (1,1,255) DO start /min ping 192.168.1.%%i -n 1) & timeout 10 >nul
arp -a | find "dynamic"
timeout
дает время для завершения ping
s и arp
для построения данных кеша.
Обязательно адаптируйте базовый адрес (192.168.1.
) к вашим потребностям.Если вы используете неанглийскую версию Windows, вам также придется адаптировать строку dynamic
.
. start /min
делает ping
весьма эффективными, выполняя их параллельно.
Примечание: некоторые компьютеры / устройства могут не отвечать на ping
, поэтому они будут отсутствовать в списке.
Бонусная линия:
for /f %%a in ('arp -a^|find "dynam"') do for /f "tokens=2,3 delims=[] " %%b in ('ping -a -n 1 %%a^|find "["') do echo %%c %%b
(снова, это для английской версии. Адаптируйте токены для других языков, для немецкой Windows это tokens=5,6
)