Como extraio os endereços IP IPv4 da saída ipconfig e depois os filtra para que minha saída inclua apenas uma lista dos endereços IP?

1

Como faço para extrair o endereço IP IPv4 da saída do ipconfig

Eu li este post e foi muito útil. Eu só queria saber se é uma maneira que eu possa extrair apenas os endereços IP (xxx.xxx.xxx.xxx). A melhor maneira que eu poderia pensar em usar o bloco de notas para encontrar tudo / substituir tudo.

Existe algum método que eu possa usar via linha de comando?

    
por Hassan Daudzai 06.10.2017 / 22:00

2 respostas

1

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).
por 06.10.2017 / 22:29
0

Aproveitando a resposta de DavidPostill à pergunta que você vinculou ,

@echo off
setlocal
setlocal enabledelayedexpansion
rem throw away everything except the IPv4 address line 
for /f "usebackq tokens=*" %%a in ('ipconfig ^| findstr IPv4') do (
  rem we have for example "IPv4 Address. . . . . . . . . . . : 192.168.42.78"
  rem split on ':' and get 2nd token
  for /f delims^=^:^ tokens^=2 %%b in ('echo %%a') do (
    rem we have " 192.168.42.78"
    rem split on '.' and get 4 tokens (octets)
    for /f "tokens=1-4 delims=." %%c in ("%%b") do (
      set _o1=%%c
      set _o2=%%d
      set _o3=%%e
      set _o4=%%f
      rem strip leading space from first octet
      set _4octet=!_o1:~1!.!_o2!.!_o3!.!_o4!
      echo !_4octet!
      )
    )
  )
endlocal

irá listar os endereços IPv4 para todas as interfaces relatadas por ipconfig .

    
por 06.10.2017 / 23:26