Пример, ключ реестра [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs], где сохраняется информация о введенных URL'ах. Не известно, какое имя будет иметь параметр, содержащий значение, скажем,
CMD/BAT - [решено] Удалить параметр реестра, содержащий определенные данные
-
BaerLinn
CMD/BAT - [решено] Удалить параметр реестра, содержащий определенные данные
Хелп! Нужен батник, который бы удалял параметр реестра, содержащий определенную информацию.
Пример, ключ реестра [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs], где сохраняется информация о введенных URL'ах. Не известно, какое имя будет иметь параметр, содержащий значение, скажем,
Пример, ключ реестра [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs], где сохраняется информация о введенных URL'ах. Не известно, какое имя будет иметь параметр, содержащий значение, скажем,
http://udaff.com/
. И нужно удалить этот параметр. Как? Хелп!-
Iska
Re: CMD/BAT - [решено] Удалить параметр реестра, содержащий определенные данные
Попробуйте наподобие такого:
Код:
Будут убраны все упоминания о «
Вопрос лишь в том, будут ли работать параметры, лежащие ниже удаляемых? Допустим, мы нашли и удаляем параметр «url15», останутся ли после удаления рабочими значения из «url16», «url17», «url18» и т.д.? Не проверял.
Код:
Код: Выделить всё
@echo off
set sKey=HKCU\Software\Microsoft\Internet Explorer\TypedURLs
for /f "delims= " %%i in ('reg.exe query "%sKey%" ^| find /i "www.microsoft.com"') do (reg.exe delete "%sKey%" /v "%%i" /f >nul)Будут убраны все упоминания о «
www.microsoft.com
».Вопрос лишь в том, будут ли работать параметры, лежащие ниже удаляемых? Допустим, мы нашли и удаляем параметр «url15», останутся ли после удаления рабочими значения из «url16», «url17», «url18» и т.д.? Не проверял.
-
NiOl
Re: CMD/BAT - [решено] Удалить параметр реестра, содержащий определенные данные
начал извращаться с подпараметрами и не успел в первонахи но раз уж добил - выкладываю
вызов такой - батник, после него какую подстроку искать, потом на что заменять и если замена нужна не всей строки из хистори, а только той части, что ищется, то добавляем "плюс":
Url.bat udaff.com ya.ru
заменит строку
а Url.bat udaff.com ya.ru +
заменит строку
Код:
вызов такой - батник, после него какую подстроку искать, потом на что заменять и если замена нужна не всей строки из хистори, а только той части, что ищется, то добавляем "плюс":
Url.bat udaff.com ya.ru
заменит строку
http://udaff.com/
на ya.ruа Url.bat udaff.com ya.ru +
заменит строку
http://udaff.com/
на http://ya.ru/
Код:
Код: Выделить всё
@echo off
SetLocal EnableExtensions
SetLocal EnableDelayedExpansion
set SearchStr=%1
set ReplaceStr=%2
if "%1"=="" (
msg %username% "Use: %0 [+] where `+` = `smart Replace`"
exit 1
)
rem Рекурсивный вызов "Reg" иногда глючит - разносим Query и Add
Reg Query "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs" | Find /I "%SearchStr%" >%~dpn0.tmp
for /f "usebackq tokens=1,2,3" %%K in ("%~dpn0.tmp") do (
if "%3"=="+" (
set Data=%%M
set Data=!Data:%SearchStr%=%ReplaceStr%!
) else (
set Data=%ReplaceStr%
)
Reg Add "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs" /v "%%K" /t "%%L" /d "!Data!" /f
)-
Iska
Re: CMD/BAT - [решено] Удалить параметр реестра, содержащий определенные данные
Из письма в ПМ:
Цитата Ruslan-kam:
Использовал ваш сценарий из
Изменил путь по которому ищется текст, но почему то не находит текст в ключах в которых есть пробелы. Помогите исправить.
…
Вопросы следует помещать именно на форум, ибо тут, помимо Iska, всегда найдётся более чем достаточное число людей, желающих и могущих помочь. А для правильного ответа потребуется следующее:
Приведите здесь Ваш, пусть и неработающий, код пакетного файла — тогда можно будет говорить предметно.
Цитата Ruslan-kam:
Использовал ваш сценарий из
CMD/BAT - [решено] Удалить параметр реестра, содержащий определенные данные
Изменил путь по которому ищется текст, но почему то не находит текст в ключах в которых есть пробелы. Помогите исправить.
…
Вопросы следует помещать именно на форум, ибо тут, помимо Iska, всегда найдётся более чем достаточное число людей, желающих и могущих помочь. А для правильного ответа потребуется следующее:
Приведите здесь Ваш, пусть и неработающий, код пакетного файла — тогда можно будет говорить предметно.
-
Ruslan-kam
Re: CMD/BAT - [решено] Удалить параметр реестра, содержащий определенные данные
И так есть путь в реестре в нём ключи со строковыми параметрами если ключ имеет вид "XXX", то батник работает как надо, если же ключ носит имя с пробелом "XXX XXX", то командная строка возвращает ошибку что такое значение не найдено. Нужно именно таким способом удалить несколько ключей к примеру "Mobile Partner"
Код:
Вот пример батника
Код:
Код:
Код: Выделить всё
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
"Mobile Partner"="C:\Program Files\MegaFon Internet\MegaFon Internet.exe"Вот пример батника
Код:
Код: Выделить всё
set sKey=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\
for /f "delims= " %%i in ('reg.exe query "%sKey%" ^| find /i "MegaFon"') do (reg.exe delete "%sKey%" /v "%%i" /f >nul)-
Iska
Re: CMD/BAT - [решено] Удалить параметр реестра, содержащий определенные данные
Если Вам известно имя параметра раздела реестра — нет никакой нужды делать опрос и разбор, достаточно простого:
Код:
Код:
Код: Выделить всё
reg.exe delete "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v "Mobile Partner" /f-
Ruslan-kam
Re: CMD/BAT - [решено] Удалить параметр реестра, содержащий определенные данные
Я не знаю какое имя будет у ключей. Я знаю только часть пути куда они ведут. В этом и загвоздка.
Поэкспериментировав установил что если в устанавливаемом командой set ключе убрать самый последний слэш, то батник начинает работать на половину. А именно:
Запускаем такой батник
Код:
То получаем такую ошибку
Код:
Получается он находит ключь правильно, но передаёт на удаление часть ключа до пробела. Поэтому не срабатывает
Поэкспериментировав установил что если в устанавливаемом командой set ключе убрать самый последний слэш, то батник начинает работать на половину. А именно:
Запускаем такой батник
Код:
Код: Выделить всё
set sKey=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
for /f "delims= " %%i in ('reg.exe query "%sKey%" ^| find /i "MegaFon"') do (reg.exe delete "%sKey%" /v "%%i" /f >nul)То получаем такую ошибку
Код:
Код: Выделить всё
C:\>set sKey=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
C:\>for /F "delims= " %i in ('reg.exe query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" | find /i "MegaFon"') do (reg.exe delete "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v %i /f 1>nul )
C:\>(reg.exe delete "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v Mobile /f 1>nul )
Ошибка: Не удается найти указанный раздел или параметр в реестре.
C:\>pause Для продолжения нажмите любую клавишу . . .Получается он находит ключь правильно, но передаёт на удаление часть ключа до пробела. Поэтому не срабатывает
-
Ruslan-kam
Re: CMD/BAT - [решено] Удалить параметр реестра, содержащий определенные данные
УРААААААА! Сам победил.
Надо добавить команду Tokens она определяет сколько строк передавать в тело для выполнения цикла. Звёздочка автоматически присваивает строке переменную которую уже можно использовать в теле. Команду delims= пропустил потому что она и у меня и по умолчанию имеет в параметре табуляцию и пробел. Так что мне она не нужна.
Код:
Надо добавить команду Tokens она определяет сколько строк передавать в тело для выполнения цикла. Звёздочка автоматически присваивает строке переменную которую уже можно использовать в теле. Команду delims= пропустил потому что она и у меня и по умолчанию имеет в параметре табуляцию и пробел. Так что мне она не нужна.
Код:
Код: Выделить всё
set sKey=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
for /f "Tokens=1-2*" %%i in ('reg.exe query "%sKey%" ^| find /i "Megafon"') do (reg.exe delete "%sKey% " /v "%%i %%j" /f >nul)-
SendMessage
Re: CMD/BAT - [решено] Удалить параметр реестра, содержащий определенные данные
Цитата Ruslan-kam:
УРААААААА! Сам победил.
Все это, конечно, хорошо, но что ты будешь делать, если другой параметр будет не из двух слов, а из одного? Или из трех?
Ведь, как ты сам говоришь, не один параметр может подпадать под поиск. А один параметр и напрямую удалить можно. Iska об этом и сказал.
УРААААААА! Сам победил.
CMD/BAT - [решено] Удалить параметр реестра, содержащий определенные данные
Все это, конечно, хорошо, но что ты будешь делать, если другой параметр будет не из двух слов, а из одного? Или из трех?
Ведь, как ты сам говоришь, не один параметр может подпадать под поиск. А один параметр и напрямую удалить можно. Iska об этом и сказал.
-
Ruslan-kam
Re: CMD/BAT - [решено] Удалить параметр реестра, содержащий определенные данные
SendMessage,
Вот так!
Код:
Всё это безобразие засовываем в один батник.
Может коряво и не профессионально, но зато работает.
Вот так!
Код:
Код: Выделить всё
@echo off
REM удаляем ключ без пробелов в имени
set sKey=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
for /f "" %%i in ('reg.exe query "%sKey%" ^| find /i "Megafon"') do (reg.exe delete "%sKey% " /v "%%i" /f >nul)
REM удаляем ключ с двумя словами в имени
set sKey=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
for /f "Tokens=1-2*" %%i in ('reg.exe query "%sKey%" ^| find /i "Megafon"') do (reg.exe delete "%sKey% " /v "%%i %%j" /f >nul)
REM удаляем ключ с тремя словами в имени
set sKey=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
for /f "Tokens=1-3*" %%i in ('reg.exe query "%sKey%" ^| find /i "Megafon"') do (reg.exe delete "%sKey% " /v "%%i %%j %%k" /f >nul)
REM ну и так далее скольку нужно столько и выполняем.Всё это безобразие засовываем в один батник.
Может коряво и не профессионально, но зато работает.