Existe uma maneira de obter apenas o endereço MAC Ethernet via prompt de comando?
Você pode fazer o que você precisa usando uma sequência de uma linha (mas complicada) de comandos incorporados.
Na linha de comando:
for /f "usebackq tokens=3 delims=," %a in ('getmac /fo csv /v ^| find "Local Area Connection"') do set MAC=%~a
De um arquivo em lotes:
for /f "usebackq tokens=3 delims=," %%a in ('getmac /fo csv /v ^| find "Local Area Connection"') do set MAC=%%~a
Como isso funciona?
Podemos usar:
getmac /fo csv /v
Para obter o endereço MAC (Media Access Control) e a lista de protocolos de rede associados a cada endereço para todas as placas de rede locais.
Use a opção /v
para obter uma saída detalhada (que inclui o "Nome da Conexão"). O "Nome da Conexão" é necessário mais tarde para que possamos identificar qual adaptador é a Ethernet
connection:
"Connection Name","Network Adapter","Physical Address","Transport Name"
"Local Area Connection","Realtek PCIe GBE Family Controller","F0-BF-97-62-95-5D","\Device\Tcpip_{45B9E87F-83FB-4829-A751-6B62656CC1A8}"
"Wireless Network Connection","Atheros AR9285 Wireless Network Adapter","CC-AF-78-B2-4C-09","\Device\Tcpip_{B108BB0B-CCDC-4ACA-9DFE-5A2F17BC138D}"
"Bluetooth Network Connection","Bluetooth Device (Personal Area Network)","CC-AF-78-B2-4C-0A","Media disconnected"
Se canalizarmos |
desta saída para find
, podemos extrair as informações apenas para a Ethernet
connection (que tem o nome da conexão "Local Area Connection"):
getmac /fo csv /v ^| find "Local Area Connection"
Retorna a informação "Conexão de Área Local" no formato csv (delimitado por vírgulas) da seguinte forma:
"Local Area Connection","Realtek PCIe GBE Family Controller","F0-BF-97-62-95-5D","\Device\Tcpip_{45B9E87F-83FB-4829-A751-6B62656CC1A8}"
O terceiro valor (delimitado por vírgula) é o endereço MAC.
Agora usamos o comando for
para extrair apenas o endereço MAC da string acima.
A string é passada para o comando for
(usando o caractere ' (backquote) junto com usebackq
:
for /f "usebackq tokens=3 delims=," %a in ('string') do
Retorna o terceiro token (valor) da string
delimitada por vírgula da seguinte forma:
"F0-BF-97-62-95-5D"
%~a
é usado para remover as aspas da string, deixando:
F0-BF-97-62-95-5D
Finalmente a variável MAC
está definida como F0-BF-97-62-95-5D
:
set MAC=%~a
Observe em um arquivo de lote que todos os %
devem ser substituídos por %%
.
Continuação da reedição
- Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
- find - Procure uma string de texto em um arquivo & exibir todas as linhas onde ele é encontrado.
- para / f - Comando Loop contra os resultados de outro comando.
- getmac - Exibe o endereço MAC (Controle de Acesso à Mídia) e a lista de protocolos de rede associados a cada endereço para todas as placas de rede em cada computador, localmente ou através de uma rede.
- parâmetros - Um argumento de linha de comando (ou parâmetro) é qualquer valor passado para um script em lote.
- definir - Exibir, definir ou remover variáveis de ambiente do CMD. As alterações feitas com o SET permanecerão apenas pela duração da sessão atual do CMD.