Como posso extrair apenas uma lista de endereços IP4 da saída do ipconfig?
Use o seguinte arquivo de lote (test.cmd):
@echo off
setlocal
setlocal enabledelayedexpansion
for /f "usebackq tokens=2 delims=:" %%a in ('ipconfig ^| findstr /r "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"') do (
set _temp=%%a
rem remove leading space
set _ipaddress=!_temp:~1!
echo !_ipaddress!
)
endlocal
Exemplo de uso e saída:
> ipconfig | findstr /r "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"
IPv4 Address. . . . . . . . . . . : 192.168.42.78
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.42.129
> test
192.168.42.78
255.255.255.0
192.168.42.129
Leitura Adicional
- Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
- enabledelayedexpansion - Expansão com atraso fará com que as variáveis sejam expandidas em tempo de execução e não no tempo de análise.
- para / f - Comando Loop contra os resultados de outro comando.
- ipconfig - Configurar IP (configuração do protocolo da Internet)
- 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.
- setlocal - Defina opções para controlar a visibilidade de variáveis de ambiente em um arquivo em lotes.
- variáveis - Extrai parte de uma variável (substring).