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

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

epoddubniy 27-05-2021 12:55 2959040

Передача значения каждой строки в переменную
 
Здравствуйте.
Помогите пожалуйста найти ошибку

Выполняю код:
Код:

for /f "tokens=*" %%a in ('netsh interface ipv4 show config ^| findstr /r "IP-адрес.*192.168.*"') do (for /f "tokens=2 delims=адрес " %%b in ("%%a") do set ip1=%%b  ip2=%%c ip3=%%d)
в результате вывод:
set ip1=192.168.220.1 set ip2=%с set ip3=%d

всего - три строки. Хотел бы, чтобы каждая из строк сохранилась в переменную. Не получается.

megaloman 27-05-2021 13:46 2959042

Код:

@Echo Off
cls
        >nul chcp 437
        Set "Find=^ *IP Address: *192\.168\..*$"
       
        Set /A N=0
        For /f "usebackq delims=" %%i In (`netsh interface ipv4 show config ^| findstr.exe /R /I /C:"%Find%"`) Do (
                Set "IP=%%i"
                Call Set /A N+=1
                Call Set "@ip%%N%%=%%IP:*                          =%%"
        )
        Set "@ip"       
pause
Exit /B


epoddubniy 27-05-2021 14:29 2959044

Спасибо, megaloman,
Скажите пожалуйста, можно ли как-то в Ваш код добавить вот это
Код:

for /f "tokens=*" %c in ('netsh interface ipv4 show config ^| findstr /r "Настройка.*интерфейса.*Eth.*"') do (for /f "usebackq tokens=3 delims= " %d in ('%c') do set interface=%d)
чтобы потом можно было воспользоваться полученными переменными %interface% и %@ip1%
в командах
Код:

netsh interface ip set address name=%interface% static %@ip1% 255.255.248.0 192.168.137.15
netsh interface ip set dns %interface% static 192.168.137.16
netsh interface ip add dns %interface% 192.168.137.17


alpap 27-05-2021 23:29 2959061

Код:

@echo off
for /f "skip=2 tokens=4" %%a in ('netsh interface show interface') do (
 echo "%%a"
 for /f "tokens=*" %%i in ('netsh interface ip show addresses name^="%%a"') do call :# "%%a" "%%i"
 echo:
)
pause& exit

:#
 for /f "tokens=1,2 delims=:" %%a in ("%~2") do (
  for /f "tokens=*" %%i in ("%%b") do (
  echo %%a|>nul find "DHCP включен"      && echo:DHCP включен=%%i
  echo %%a|>nul find "IP-адрес"          && echo:IP-адрес=%%i
  echo %%a|>nul find "Префикс подсети"    && echo:Префикс подсети=%%i
  echo %%a|>nul find "Основной шлюз"      && echo:Основной шлюз=%%i
  echo %%a|>nul find "Метрика шлюза"      && echo:Метрика шлюза=%%i
  echo %%a|>nul find "Метрика интерфейса" && echo:Метрика интерфейса=%%i
  )
 )
exit /b


megaloman 28-05-2021 07:30 2959073

Код:

@Echo Off
cls
        >nul chcp 866

        Set "FindInf=^Настройка интерфейса .*$"
        Set "FindIP=^ *IP-адрес *192\.168\..*$"
rem        Set "FindIP=^ *IP-адрес *.*$"

        Set /A N=0
        For /f "usebackq delims=" %%s In (`netsh interface ipv4 show config`) Do (
                For /f "usebackq delims=" %%f In (`Echo %%s^| findstr.exe /R /I /C:"%FindInf%"`) Do Set "Inf=%%f"
                For /f "usebackq delims=" %%i In (`Echo %%s^| findstr.exe /R /I /C:"%FindIP%"`) Do (
                        Set "IP=%%i"
                        Call Set /A N+=1
                        Call Set "@ip%%N%%=%%IP:*                          =%%"
                        Call Set "interface%%N%%=%%Inf:* "=%%
                )
        )

        Echo %N%
        Set "@ip"       
        Set "interface"

        Echo "%interface1%" %@ip1%       
pause
Exit /B

Сохранить код в файл в 866 кодировке

epoddubniy 28-05-2021 16:24 2959095

Цитата:

Цитата megaloman
Set "FindIP=^ *IP-адрес *192\.168\..*$" »

megaloman, объясните пожалуйста, какие возможности дает птичка в названии переменной, для чего в конце стоит *$, а октеты разделяются дополнительно "\"?

megaloman 28-05-2021 17:27 2959103

Читайте findstr /?
У меня применяется в поиске регулярные выражения
Познакомьтесь с регулярными выражениями, например здесь, или найдите еще что-нибудь.


Время: 12:26.

Время: 12:26.
© OSzone.net 2001-