Как я могу извлечь только список 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 - устанавливает параметры для контроля видимости переменных среды в командном файле.
- переменные - извлечение части переменной (подстроки).