Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
CMD/BAT - Передача значения каждой строки в переменную

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


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

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


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

Выполняю код:
Код: Выделить весь код
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

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

Отправлено: 12:55, 27-05-2021

 

Ветеран


Contributor


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

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


Код: Выделить весь код
@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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

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

Отправлено: 13:46, 27-05-2021 | #2



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

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


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


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

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


Спасибо, 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

Отправлено: 14:29, 27-05-2021 | #3


Ветеран


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

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


Код: Выделить весь код
@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
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:29, 27-05-2021 | #4


Ветеран


Contributor


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

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


Код: Выделить весь код
@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 кодировке

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 28-05-2021 в 08:01.

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

Отправлено: 07:30, 28-05-2021 | #5


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


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

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


Цитата megaloman:
Set "FindIP=^ *IP-адрес *192\.168\..*$" »
megaloman, объясните пожалуйста, какие возможности дает птичка в названии переменной, для чего в конце стоит *$, а октеты разделяются дополнительно "\"?

Отправлено: 16:24, 28-05-2021 | #6


Ветеран


Contributor


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

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


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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

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

Отправлено: 17:27, 28-05-2021 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Ввод с клавиатуры значения в переменную river123 Скриптовые языки администрирования Windows 8 28-05-2018 00:17
CMD/BAT - [решено] Добавление строки после каждой строки с подстановкой значения в имя файла d22cva Скриптовые языки администрирования Windows 5 05-01-2015 07:50
CMD/BAT - [решено] Увеличение значения имени переменной или считывание строки файла в переменную VokaMut Скриптовые языки администрирования Windows 12 26-11-2012 15:54
Передача пути через переменную в NSIS Dezmont777 Автоматическая установка приложений 6 23-08-2012 01:06
CMD/BAT - [решено] Разобрать txt, на строки и назначить каждой переменную campbell Скриптовые языки администрирования Windows 6 26-11-2011 01:32




 
Переход