![]() |
Удалить параметр реестра, содержащий определенные данные
Хелп! Нужен батник, который бы удалял параметр реестра, содержащий определенную информацию.
Пример, ключ реестра [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs], где сохраняется информация о введенных URL'ах. Не известно, какое имя будет иметь параметр, содержащий значение, скажем, http://udaff.com/. И нужно удалить этот параметр. Как? Хелп! |
Попробуйте наподобие такого:
Код:
@echo off Вопрос лишь в том, будут ли работать параметры, лежащие ниже удаляемых? Допустим, мы нашли и удаляем параметр «url15», останутся ли после удаления рабочими значения из «url16», «url17», «url18» и т.д.? Не проверял. |
начал извращаться с подпараметрами и не успел в первонахи ;) но раз уж добил - выкладываю
вызов такой - батник, после него какую подстроку искать, потом на что заменять и если замена нужна не всей строки из хистори, а только той части, что ищется, то добавляем "плюс": 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 |
Из письма в ПМ:
Цитата:
Приведите здесь Ваш, пусть и неработающий, код пакетного файла — тогда можно будет говорить предметно. |
И так есть путь в реестре в нём ключи со строковыми параметрами если ключ имеет вид "XXX", то батник работает как надо, если же ключ носит имя с пробелом "XXX XXX", то командная строка возвращает ошибку что такое значение не найдено. Нужно именно таким способом удалить несколько ключей к примеру "Mobile Partner"
Код:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run] Код:
set sKey=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\ |
Если Вам известно имя параметра раздела реестра — нет никакой нужды делать опрос и разбор, достаточно простого:
Код:
reg.exe delete "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v "Mobile Partner" /f |
Я не знаю какое имя будет у ключей. Я знаю только часть пути куда они ведут. В этом и загвоздка.
Поэкспериментировав установил что если в устанавливаемом командой set ключе убрать самый последний слэш, то батник начинает работать на половину. А именно: Запускаем такой батник Код:
set sKey=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run Код:
C:\>set sKey=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run |
УРААААААА! Сам победил.
Надо добавить команду Tokens она определяет сколько строк передавать в тело для выполнения цикла. Звёздочка автоматически присваивает строке переменную которую уже можно использовать в теле. Команду delims= пропустил потому что она и у меня и по умолчанию имеет в параметре табуляцию и пробел. Так что мне она не нужна. Код:
set sKey=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run |
Цитата:
Ведь, как ты сам говоришь, не один параметр может подпадать под поиск. А один параметр и напрямую удалить можно. Iska об этом и сказал. |
SendMessage,
Вот так! Код:
@echo off Может коряво и не профессионально, но зато работает. |
Я думаю максимум 4 раза надо будет пробежаться по ветке что бы удалить то что нужно. Вряд ли будет параметр содержащий в имени 5 и более слов.
Хотя даже если и есть, ни чего не помешает и с ним справится :yes: |
Ruslan-kam, тогда уж в первом цикле напиши "Tokens=1". И звездочки тебе ни к чему - только лишние ошибки. Через них записывается в дополнительную переменную остаток от строки.
Т.е. если пишешь "Tokens=1-2*", то помимо двух переменных, разделенных разделителем (маслом масляным :) ), создается третья, в данном случае %%k - в ней содержится весь остаток от строки. Пример: Код:
строка, полученная функцией query: |
SendMessage, ну так то да. есть немного грязи. Вчера башка уже ватная была пока ломал мозг, как с пробелом справится. Почему то звёздочка мне в память засела что именно она образует дополнительные переменные. Сегодня на свежую голову перечитал справку по параметрам. Согласен звезда вообще ни к чему.
Да и не спец я по батникам... |
Если у вас есть альтернатива, с радостью прочту её.
|
Привет!
Может поможет кто Есть ветки реестра, типа HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\DeviceClasses\{e768c1e7-986a-404d-bbf3-748b5dce914a}\##?#USBSTOR#Disk&Ven_SanDisk&Prod_Cruzer_Micro&Rev_0.1#20052845231DCFB1DD8D&0#{e768c1e7-986a-404d-bbf3-748b5dce914a} Объеденияет их то, что в каждой из них, в названии ветки есть #USBSTOR# Надо с помощью батника удалить все ветки в реестре, в имени которых есть #USBSTOR# без всяких вопросов Заранее спасибо |
Время: 02:30. |
Время: 02:30.
© OSzone.net 2001-