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

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

Ответить
Настройки темы
CMD/BAT - [решено] Изменение параметра реестра.

Аватара для SANIOK_AV

Старожил


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

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


Доброго времени суток!
Помогите пожалуйста с написанием батника.
Существует некоторый параметр реестра HKCU\software\programma\parametr типа REG_SZ.
Значение этого параметра представляет собой:
либо пустое значение
либо строку вида что-то типа: site1.com
либо строку состоящую из набора различных имён и масок разделённых между собой точкой с запятой типа: site1.com;megasite2.com;123.org;*.org.ru
либо вообще этотого параметра может не существовать - в этом случае ничего не меняем (т.е. параметр не создаём)

Если же параметр существует, то поступаем следующим образом:
Нужно проанализировать его значение на присутствие маски *.domain.site.com
Если эта маска присутствует, то ничего не меняем.
Если присутствует только domain.site.com то дописываем к нему *. чтоб получилось *.domain.site.com
Если нет ни *.domain.site.com ни domain.site.com то добавляем маску *.domain.site.com (через точку запятую) в значение этого параметрареестра.
Заранее благодарен!

Отправлено: 12:13, 12-09-2014

 

Ветеран


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

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


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

set "KeyName=HKCU\Software\programma"
set "Value=parametr"
set "Domain=domain.site.com"

 (
 for /f "delims=" %%i in ('
  reg query "%KeyName%" /v "%Value%" /f "%Domain%" /d 2^>nul^| findstr /il "%Domain%"
 ') do (
  set var_1=%%i
  for %%j in (%%i) do (
   if /i "%%j"=="%Domain%" (
    set var_1=!var_1:*REG_SZ=!
    for /f "tokens=*" %%k in ("!var_1:%Domain%=*.%Domain%!") do (
     reg add "%KeyName%" /v "%Value%" /d "%%k" /f>nul
     )
    )
   )
  )
 )|| (
 for /f "delims=" %%i in ('
  reg query "%KeyName%" /v "%Value%" 2^>nul^| findstr /ilc:"%Value%"
 ') do (
  set var_1=%%i
  for %%j in (%%i) do (
   set var_2=%%j
   )
  if /i !var_2!==REG_SZ (
   reg add "%KeyName%" /v "%Value%" /d "*.%Domain%" /f>nul
   ) else (
   for /f "tokens=*" %%j in ("!var_1:*REG_SZ=!") do (
    reg add "%KeyName%" /v "%Value%" /d "%%j;*.%Domain%" /f>nul
    )
   )
  )
 )

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

Отправлено: 21:16, 13-09-2014 | #2



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

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


Аватара для SANIOK_AV

Старожил


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

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


Georgio, Спасибо большое!
Работает!
Попробую разобраться для себя как ... ))

Отправлено: 16:34, 15-09-2014 | #3


Аватара для SANIOK_AV

Старожил


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

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


Подскажите пожалуйста, как работает конструкция:
Код: Выделить весь код
reg query "%KeyName%" /v "%Value%" /f "%Domain%" /d 2^>nul^| findstr /il "%Domain%"
и можно ли было бы вместо блока
Код: Выделить весь код
for /f "tokens=*" %%k in ("!var_1:%Domain%=*.%Domain%!") do (
     reg add "%KeyName%" /v "%Value%" /d "%%k" /f>nul
     )
использовать блок
Код: Выделить весь код
set var_1=!var_1:%Domain%=*.%Domain%!
reg add "%KeyName%" /v "%Value%" /d "!var_1!" /f>nul
?

Отправлено: 18:51, 15-09-2014 | #4


Аватара для SANIOK_AV

Старожил


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

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


С блоком
Код: Выделить весь код
for /f "tokens=*" %%k in ("!var_1:%Domain%=*.%Domain%!") do (
     reg add "%KeyName%" /v "%Value%" /d "%%k" /f>nul
     )
понял - при выполнении моего варианта пробелы не обрезаются.

Отправлено: 12:36, 17-09-2014 | #5



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Создание/изменение параметра реестра "(По умолчанию)" при помощи reg.exe SANIOK_AV Скриптовые языки администрирования Windows 5 22-04-2022 11:11
CMD/BAT - Экспорт параметра реестра в другую ветку Valek271183 Скриптовые языки администрирования Windows 0 05-07-2013 17:45
VBS/WSH/JS - Изменение параметра реестра VBSом Nikitosehr Скриптовые языки администрирования Windows 8 16-05-2012 18:24
CMD/BAT - [решено] Получение значения параметра реестра IfoR Скриптовые языки администрирования Windows 6 08-04-2010 12:54
CMD/BAT - [решено] Получение значения параметра реестра user_123 Скриптовые языки администрирования Windows 3 05-04-2010 13:10




 
Переход