Ну, простой способ извлечь только MAC-адрес будет использовать петлю FOR
.
@ECHO OFF
Rem | Get only the MAC Address
for /f "tokens=3 skip=1" %%a in ('wmic path Win32_NetworkAdapter where "PNPDeviceID like '%%%%PCI%%%%' AND NetConnectionStatus=2 AND AdapterTypeID='0'" get name^,MacAddress^,AdapterType') do (Set "MacAddress=%%a")
Echo %MacAddress%
РЕДАКТИРОВАТЬ:
Быть такВаш оригинальный скрипт, кажется, выводит только один MAC-адрес.Поскольку вам нужны все Ethernet
связанные MAC-адреса, мы можем использовать IPCONFIG /ALL
, чтобы получить возвращаемый Physical Address
или MAC-адрес.
То, что нам нужно извлечь только некоторые данные из беспорядка IPCOFIG
,нам понадобится несколько дополнительных циклов FOR в блоке кода для извлечения данных.
Сценарий ниже найдет все адаптеры с именем «Ethernet», затем перейдет к установке Physical Address
в строку,Я поместил REM
внутри скрипта, чтобы объяснить, что делает каждый шаг кода.Если у вас есть какие-либо вопросы, оставьте их ниже.
Найдите MAC-адреса для Ethernet.bat:
@echo off
setlocal enabledelayedexpansion
Rem | Expand ipconfig To Loop
for /f "tokens=*" %%A in ('ipconfig /all') do (
Rem | Only Find The Adapter Names With "Ethernet"
for /f "tokens=*" %%B in ('Echo %%A^| find /V "."^| find /V "::"^| find /I ":"^| find /I "Ethernet"') do (
Rem | Remove ":" From Output
set "adapter=%%B"
set adapter=!adapter::=%!
Rem | Find the first "adapter" In ipconfig
set adapterfound=false
for /f "tokens=1-2 delims=:" %%f in ('ipconfig /all') do (
set "item=%%f"
if /i "!item!"=="!adapter!" (
set adapterfound=true
) else if not "!item!"=="!item:Physical Address=!" if "!adapterfound!"=="true" (
Rem | It Was Found, Extract Physical Address Data
set "adress=%%g"
set adress=!adress:* =%!
set adapterfound=false
)
)
Rem | Echo Each Result
echo !adapter!: !adress!
)
)
pause
GOTO :EOF
Для получения справки по любой из команд выполнитеследующие:
call /?
set /?
for /?
if /?
find /?
- и т. Д.