#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
независимо от его текущего домена, который отлично выполняет то, что вы просили.