Войти

Показать полную графическую версию : [решено] .bat: удаление значения реестра после отбора


Страниц : 1 [2]

Lightman123
17-08-2011, 13:25
Я его целиком скопировал в пустой bat-файл и запустил. Сразу закрывается. Если открыть через cmd, то выдает ошибку про слишком много параметров.
Может дело в версии reg.exe?
У меня если смотреть через reg query 3.0, ОС WinXP.

Foreigner
17-08-2011, 13:28
посмотри reg query /?
Есть ли там параметр /s

SendMessage
17-08-2011, 13:28
Можно и так:
@echo off

set "Section=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{36FC9E60-C465-11CF-8056-44455340000}"

for /f "tokens=*" %%a in ('reg query "%Section%" ^| findstr /c:"HKEY_LOCAL_MACHINE"') do (
reg query "%%a" /s | find "USBSTOR_BULK" && if not "%%a"=="%Section%" echo reg delete "%%a" /f >> USBSTOR_BULK.txt
)
Только надо проверять имя секции внимательно - у меня другое, например - {36FC9E60-C465-11CF-8056-444553540000}

Lightman123
17-08-2011, 13:41
Второй вариант сработал, огромное вам спасибо!

Foreigner
17-08-2011, 13:43
reg query "%Section%" »
У меня reg query отказался работать с фигурными кавычками в переменной, только напрямую. Экранирование не помогло.

SendMessage
17-08-2011, 13:54
У меня reg query отказался работать с фигурными кавычками в переменной, только напрямую »
У меня работает, вроде. А вот findstr отказался. Почему и пришлось выборку делать более общую.

Второй вариант сработал, огромное вам спасибо! »
Кстати, его лучше использовать и для первой задачи - более правильный скрипт. Не сразу до кондиции его прокрутил.
@echo off

set "Section=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB"

for /f "tokens=*" %%a in ('reg query "%Section%" ^| findstr /c:"%Section%\\Vid_"') do (
reg query "%%a" /s | find "USBSTOR" && echo reg delete "%%a" /f >> USBSTOR.txt
)




© OSzone.net 2001-2012