1

Как извлечь IP-адрес IPv4 из выходных данных ipconfig

Я прочитал этот пост, и это было очень полезно. Мне просто интересно, если это способ, которым я могу извлечь только IP-адреса (xxx.xxx.xxx.xxx). Лучший способ использовать блокнот, чтобы найти все / заменить все.

Есть ли метод, который я могу использовать через командную строку?

2 ответа2

1

Как я могу извлечь только список IP4-адресов из вывода ipconfig?

Используйте следующий пакетный файл (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

Пример использования и вывод:

> 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

Дальнейшее чтение

  • Индекс AZ командной строки Windows CMD - Отличный справочник по всем вопросам, связанным с командной строкой Windows.
  • enabledelayedexpansion - отложенное расширение приведет к тому, что переменные будут расширяться во время выполнения, а не во время анализа.
  • for /f - Циклическая команда против результатов другой команды.
  • ipconfig - настройка IP (настройка интернет-протокола)
  • set - отображать, устанавливать или удалять переменные окружения CMD. Изменения, сделанные с помощью SET, будут сохраняться только в течение текущего сеанса CMD.
  • setlocal - устанавливает параметры для контроля видимости переменных среды в командном файле.
  • переменные - извлечение части переменной (подстроки).
0

Основываясь на ответе Дэвида Постилл на вопрос, который вы связали,

@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

перечислит адреса IPv4 для всех интерфейсов, о которых сообщает ipconfig .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .