Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Разделение строки с ip-адресами из реестра

Ответить
Настройки темы
CMD/BAT - Разделение строки с ip-адресами из реестра

Пользователь


Сообщения: 59
Благодарности: 7

Профиль | Отправить PM | Цитировать


нужно разделить строку полученную с помощью reg query

set INTERFACEID={0591ECA8-29A1-4154-9900-1BB692EB26BB}
for /f "tokens=3" %%i in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%INTERFACEID%" /v "IPAddress" ^| findstr "IPAddress"') do set IPSTR=%%i

( ^| findstr "IPAddress" использую - потому как например у XP REG.EXE выдает строку со своей версией - ! REG.EXE VERSION 3.0

на выходе в IPSTR имеем например 192.168.1.20\0192.168.2.20 (данные REG_MULTI_SZ)
если в windows server 2003, windows 7 у reg.exe есть стандартная опция /se, позволяющая изменить стандартный разделитель \0 в выводе (например /se #), то у windows xp этого нет.

такая конструкция не работает
for /f "tokens=1,2 delims=\0" %i in ("192.168.1.20\0192.168.2.20") do echo %i %j

как быть?

Спасибо

Отправлено: 18:03, 30-07-2012

 

Ветеран


Сообщения: 1754
Благодарности: 965

Профиль | Цитировать


Цитата NoIZz:
такая конструкция не работает »
%%i

Отправлено: 06:33, 31-07-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 59
Благодарности: 7

Профиль | Отправить PM | Цитировать


Так понятно - это из командной строки а не из батника
В батнике с %%i то же не работает если в ip адресе есть нули

for /f "tokens=1,2 delims=\0" %%i in ("192.168.1.20\0192.168.2.20") do echo %%i %%j
вывод: 192.168.1.2 192.168.2.2

for /f "tokens=1,2 delims=\0" %%i in ("192.168.10.20\0192.168.20.20") do echo %%i %%j
вывод: 192.168.1 .2

Отправлено: 09:27, 31-07-2012 | #3


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


не знаю куда написать, может кто поможет, в принципе проблема схожая
есть переменная вида 192.168.0.15
нужно разбить на два значения
первое - 192.168.0.
а второе - 15
общая задача такова - вводится ИП и некоторые другие параметры, и исходя из дополнительных параметров, ип адрес меняется на определенное значение
к примеру я ввел ИП для переменной IP - 10.57.100.18
потом ввел какое то значение другой переменной, например 24
в результате нужно вывести что IP=10.57.100.42

Я думал разбить переменную на 2 переменных и к последней прибавлять необходимое число.
как это можно организовать? пытался через for/ ,но как то не поехало

Отправлено: 17:13, 09-01-2013 | #4


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set /p sIP=Enter IP: 
set /p sLastPartIP=Enter last part of IP: 

for /f "tokens=1-3 delims=." %%i in ("%sIP%") do set sNewIP=%%i.%%j.%%k.%sLastPartIP%

echo [%sNewIP%]

endlocal
exit /b 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:39, 09-01-2013 | #5


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024

Профиль | Отправить PM | Цитировать


NoIZz,
Код: Выделить весь код
@Echo Off

SetLocal
Set INTERFACEID={0591ECA8-29A1-4154-9900-1BB692EB26BB}
For /F "Tokens=3" %%A In ('Reg Query "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%INTERFACEID%" /v "IPAddress"^|Find /i "IPAddress"') Do Set IPSTR=%%A
For %%A In (%IPSTR:\0=,%) Do Echo:%%A
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:20, 10-01-2013 | #6


Аватара для Debugger

Ветеран


Сообщения: 867
Благодарности: 70

Профиль | Отправить PM | Цитировать


Цитата El Sanchez:
For %%A In (%IPSTR:\0=,%) Do Echo:%%A »
А можете ткнуть носом в объяснение вот этого чуда %IPSTR:\0=,%. Не могу найти описание в ntcmds.chm.

Отправлено: 10:00, 04-04-2013 | #7


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024

Профиль | Отправить PM | Цитировать


Цитата Debugger:
А можете ткнуть носом в объяснение вот этого чуда %IPSTR:\0=,% »
Debugger, set /?, начиная с примера %PATH:str1=str2%. Представьте, что PATH - это IPSTR, str1 - это \0, а str2 - это ,.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:14, 04-04-2013 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Разделение строки с ip-адресами из реестра

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Поиск строки в значени ключа реестра. user_123 Скриптовые языки администрирования Windows 14 27-11-2014 18:07
VPN/Firewall - VPN с адресами в одной подсети Shestipaliy Сетевое оборудование 1 15-06-2009 17:43
RDP/Citrix/Term - Как правильно поиграться с ИП адресами? minion Сетевые технологии 5 29-12-2007 20:56
Разделение реестра на домашней машине Mr666 Microsoft Windows 2000/XP 3 26-02-2007 21:08
Письма с чужими адресами smckey Хочу все знать 19 08-11-2006 18:08




 
Переход