|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удалить параметр реестра, содержащий определенные данные |
|
|
CMD/BAT - [решено] Удалить параметр реестра, содержащий определенные данные
|
Новый участник Сообщения: 18 |
Профиль | Отправить PM | Цитировать Хелп! Нужен батник, который бы удалял параметр реестра, содержащий определенную информацию.
Пример, ключ реестра [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs], где сохраняется информация о введенных URL'ах. Не известно, какое имя будет иметь параметр, содержащий значение, скажем, http://udaff.com/. И нужно удалить этот параметр. Как? Хелп! |
|
Отправлено: 15:54, 16-11-2009 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Попробуйте наподобие такого:
@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) Вопрос лишь в том, будут ли работать параметры, лежащие ниже удаляемых? Допустим, мы нашли и удаляем параметр «url15», останутся ли после удаления рабочими значения из «url16», «url17», «url18» и т.д.? Не проверял. |
Отправлено: 17:09, 16-11-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 426
|
Профиль | Отправить PM | Цитировать начал извращаться с подпараметрами и не успел в первонахи но раз уж добил - выкладываю
вызов такой - батник, после него какую подстроку искать, потом на что заменять и если замена нужна не всей строки из хистори, а только той части, что ищется, то добавляем "плюс": 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 <Search URL SubString> <Replace Data> [+] 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 ) |
Отправлено: 19:26, 16-11-2009 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Из письма в ПМ:
Цитата Ruslan-kam:
Приведите здесь Ваш, пусть и неработающий, код пакетного файла — тогда можно будет говорить предметно. |
|
Отправлено: 02:58, 08-02-2011 | #4 |
Пользователь Сообщения: 61
|
Профиль | Отправить PM | Цитировать И так есть путь в реестре в нём ключи со строковыми параметрами если ключ имеет вид "XXX", то батник работает как надо, если же ключ носит имя с пробелом "XXX XXX", то командная строка возвращает ошибку что такое значение не найдено. Нужно именно таким способом удалить несколько ключей к примеру "Mobile Partner"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run] "Mobile Partner"="C:\Program Files\MegaFon Internet\MegaFon Internet.exe" |
|
Последний раз редактировалось Ruslan-kam, 08-02-2011 в 06:51. Отправлено: 03:36, 08-02-2011 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 10:43, 08-02-2011 | #6 |
Пользователь Сообщения: 61
|
Профиль | Отправить PM | Цитировать Я не знаю какое имя будет у ключей. Я знаю только часть пути куда они ведут. В этом и загвоздка.
Поэкспериментировав установил что если в устанавливаемом командой 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, 08-02-2011 в 21:01. Отправлено: 20:40, 08-02-2011 | #7 |
Пользователь Сообщения: 61
|
Профиль | Отправить PM | Цитировать УРААААААА! Сам победил.
Надо добавить команду Tokens она определяет сколько строк передавать в тело для выполнения цикла. Звёздочка автоматически присваивает строке переменную которую уже можно использовать в теле. Команду delims= пропустил потому что она и у меня и по умолчанию имеет в параметре табуляцию и пробел. Так что мне она не нужна. |
Отправлено: 23:06, 08-02-2011 | #8 |
Старожил Сообщения: 175
|
Профиль | Отправить PM | Цитировать Цитата Ruslan-kam:
Ведь, как ты сам говоришь, не один параметр может подпадать под поиск. А один параметр и напрямую удалить можно. Iska об этом и сказал. |
|
Отправлено: 05:59, 09-02-2011 | #9 |
Пользователь Сообщения: 61
|
Профиль | Отправить PM | Цитировать 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 ну и так далее скольку нужно столько и выполняем. Может коряво и не профессионально, но зато работает. |
Отправлено: 06:31, 09-02-2011 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - [решено] Как из архивного образа системы извлечь нужные данные реестра? | ZurabK | Microsoft Windows Vista | 5 | 10-09-2020 12:08 | |
Разное - параметр реестра LMCompatibilityLevel | zeroua | Microsoft Windows 2000/XP | 3 | 01-08-2009 09:12 | |
HDD - [решено] HDD - удалить данные без возможности восстановления | karman13 | Накопители (SSD, HDD, USB Flash) | 24 | 08-04-2009 15:40 | |
VBS/WSH/JS - необходимо менять разрешения на раздел реестра содержащий спецсимволы | thebas | Скриптовые языки администрирования Windows | 2 | 30-03-2009 15:19 | |
VBS/WSH/JS - [решено] Как добавить "сложное" значение в "бинарный" параметр реестра с помощью WSH | 13Demon | Скриптовые языки администрирования Windows | 1 | 10-02-2009 09:47 |
|