Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Разделение строки с ip-адресами из реестра (http://forum.oszone.net/showthread.php?t=239629)

NoIZz 30-07-2012 18:03 1961637

Разделение строки с ip-адресами из реестра
 
нужно разделить строку полученную с помощью 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

как быть?

Спасибо

Foreigner 31-07-2012 06:33 1961878

Цитата:

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

%%i

NoIZz 31-07-2012 09:27 1961917

Так понятно - это из командной строки а не из батника
В батнике с %%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

haksmak@fb 09-01-2013 17:13 2062605

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

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

Iska 09-01-2013 17:39 2062623

Код:

@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


El Sanchez 10-01-2013 22:20 2063809

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


Debugger 04-04-2013 10:00 2125487

Цитата:

Цитата El Sanchez
For %%A In (%IPSTR:\0=,%) Do Echo:%%A »

А можете ткнуть носом в объяснение вот этого чуда %IPSTR:\0=,%. Не могу найти описание в ntcmds.chm.

El Sanchez 04-04-2013 11:14 2125522

Цитата:

Цитата Debugger
А можете ткнуть носом в объяснение вот этого чуда %IPSTR:\0=,% »

Debugger, set /?, начиная с примера %PATH:str1=str2%. Представьте, что PATH - это IPSTR, str1 - это \0, а str2 - это ,.


Время: 14:07.

Время: 14:07.
© OSzone.net 2001-