Я хотел бы выделить "192.168.1." и сохранить это в переменную
Используйте следующий пакетный файл (test.cmd):
@echo off setlocal setlocal enabledelayedexpansion rem throw away everything except the IPv4 address line for /f "usebackq tokens=*" %%a in (`ipconfig ^| findstr /i "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 _3octet=!_o1:~1!.!_o2!.!_o3!. echo !_3octet! ) ) ) rem add additional commands here endlocal
Заметки:
- Значение, которое вы хотите сохранить в
_3octet
- Удалить
echo
что есть для отладки - Замените
rem add additional commands here
на ваш "сетевой пинг"
Пример использования и вывод:
F:\test>ipconfig | findstr /i "ipv4" IPv4 Address. . . . . . . . . . . : 192.168.42.78 F:\test>test 192.168.42.
Дальнейшее чтение
- Индекс AZ командной строки Windows CMD - Отличный справочник по всем вопросам, связанным с командной строкой Windows.
- enabledelayedexpansion - отложенное расширение приведет к тому, что переменные будут расширяться во время выполнения, а не во время анализа.
- for / f - Циклическая команда против результатов другой команды.
- ipconfig - настройка IP (настройка интернет-протокола)
- set - отображать, устанавливать или удалять переменные окружения CMD. Изменения, сделанные с помощью SET, будут сохраняться только в течение текущего сеанса CMD.
- setlocal - устанавливает параметры для контроля видимости переменных среды в командном файле.
- переменные - извлечение части переменной (подстроки).