Измените часть существующего значения раздела реестра

#batch-file #registry

#пакетный файл #реестр

Вопрос:

Я хочу изменить значение в реестре.

В пакетном файле у меня есть:

 ECHO Changes in reg
reg import "C:modifySip.reg"
  

и в modifySip.reg у меня есть:

 Windows Registry Editor Version 5.00

[HKEY_CURRENT_USERSoftwareMicrosoftOffice16.0Lync]
"ServerSipUri"="User.Test@domainA.com"
  

И это работает!

Однако теперь я хочу использовать часть существующего значения реестра и изменить его.

Мне нужно сохранить User.Test@ часть URI и заменить domainA.com часть на domainB.com .

Комментарии:

1. Ваш вопрос кажется мне неясным, почему вы не можете просто изменить domainA.com на domainB.com в своем reg-файле? Почему вы используете reg import с .reg файлом, когда вы могли бы просто использовать reg add вместо этого? Вам даже не нужно знать, каково существующее значение, просто перезапишите его. Вот пример полного пакетного файла для этого: @"%__AppDir__%reg.exe" Add "HKCUSoftwareMicrosoftOffice16.0Lync" /V "ServerSipUri" /D "User.Test@domainB.com" /F 1> NUL .

2. Если, с другой стороны, вы хотели объяснить, что вы не знаете, каково текущее значение User.Test , и что вы хотите, чтобы эта часть осталась, и был изменен только домен, не могли бы вы отредактировать свой вопрос, чтобы прояснить это.

3. Я отредактировал сообщение. Надеюсь, теперь это понятно.

Ответ №1:

Учитывая предоставленную вами информацию и как упоминалось в моем комментарии, нет необходимости использовать .reg файл для этой задачи. Я бы предложил следующее решение для пакетного файла:

 @Echo Off
SetLocal EnableExtensions

Set "NewDomain=domainb.com"
Set "RegKey=HKCUSoftwareMicrosoftOffice16.0Lync"
Set "ValName=ServerSipUri"

For /F "EOL=H Tokens=2*" %%G In ('""%__AppDir__%reg.exe" Query "%RegKey%" /V "%ValName%" 2> NUL"'
) Do For /F "Tokens=1* Delims=@" %%I In ("%%H") Do "%__AppDir__%reg.exe" Add "%RegKey%" /V "%ValName%" /D "%%I@%NewDomain%" /F 1> NUL
  

Просто измените строку 4 на фактическую строку домена, которая вам требуется.

Ответ №2:

Я использовал код из ответа Compo, чтобы получить и добавить значение в реестр. Изменения строки были сделаны таким образом:

 set ServerSipUri=%ServerSipUri:domainA.com=domainB.com%
  

Большое спасибо за помощь.
Пабло

Комментарии:

1. PabloPhones, если вы использовали мой код, то самое меньшее, что вы могли бы сделать, это подтвердить это, прокомментировав и проголосовав за мой ответ. Однако, поскольку вы эффективно использовали все, кроме небольшой его части, вы должны были принять мой ответ. Кстати, внесение изменений, которые у вас есть, означает, что вы меняете только на domainB.com , если это происходит в данный момент domainA.com . В вашем вопросе не ясно, что вы хотели изменить его, только если это было определенное значение. Мой ответ делает это domainb.com независимо от его текущего домена, который отлично выполняет то, что вы просили.