2017-01-18 9 views
0

я делаю поиск:Пакетный файл рег удалить: как удалить ключ реестра с пространством в имени и обратной косой черты, заканчивающегося

set keypath=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders 
reg query "!keypath!" /s /f "%mysearch%" 

и я хочу, чтобы удалить все результаты, которые соответствуют с MySearch

Но я есть проблемы с некоторыми результатами, как это (myresult!):

"c:\Program Files\mysearch\" 
"c:\Program Data\mysearch\" 

когда я делаю:

reg delete "!keypath!" /v "!myresult!" /f 

это не работает (я думаю, потому что! Myresult! заканчивая \ и «), задавая мне подтверждение перед удалением и не работает, потому что система не найти ключ

когда я делаю:

set myresult=!myresult:\=\\! 
reg delete "!keypath!" /v "!myresult!" /f 

он не работает, не спрашивая меня подтверждением, но система не найти ключ слишком

когда я делаю: (! из-за места в myresult)!

reg delete "!keypath!" /v !myresult! /f 

это не работает у меня есть синтаксические ошибки, но без пробела myresult работает

Если у кого-то есть идея.

Спасибо.

ответ

1

Ваша конечная обратная косая черта избегает двойной цитаты (подробнее here).

Вы можете проверить, заканчивается ли значение косой чертой и удвоить его.

if "!myresult:~-1!"=="\" set "myresult=!myresult!\" 
reg delete "!keypath!" /v "!myresult!" /f 

Но это потерпит неудачу, если у вас есть двойной обратной косой закончилось значение, поэтому, вероятно, лучший вариант, может быть непосредственно использовать

reg delete "!keypath!" /f /v "!myresult! 

/f был перемещен и закрытие цитата была удалена. Чтобы использовать это, убедитесь, что в конце строки нет места. Поскольку цитата не была закрыта, любое пространство будет включено внутри значения «котировки».