PDA

Показать полную графическую версию : [решено] Bat ищет ключ реестра и


zion87
11-11-2011, 23:27
Доброго времени суток, помогите плиз читал похожие темы но что то ни как не могу сворганить что то подобное короче нужно что бы батник залез в реестр HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartme nu посмотрел если там ключ {645FF040-5081-101B-9F08-00AA002F954E} если есть то goto ну и если нет соответственно .... помогите плиз

да и заодно второй вопросик похожий тот же батник чтобы сравнил имя сетевого подключения например если имя "Подключение по локальной сети" то goto ну и если нет соответственно ЗАРАНЕЕ БЛАГОДАРЕН

Foreigner
12-11-2011, 16:29
zion87,

@echo off
setlocal

set "regpath=hkcu\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartme\{645 FF040-5081-101B-9F08-00AA002F954E}"
1>nul 2>&1 reg query "%regpath%" && goto:1 || goto:eof

:1
echo %regpath% exists

God_Zilla
13-11-2011, 07:33
Или так:

@echo off
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartme"^|Find /I "{645FF040-5081-101B-9F08-00AA002F954E}"`) Do goto stop
echo key no exists
pause
exit
:stop
echo key exists
pause
exit

zion87
14-11-2011, 10:39
Спасибо огромное God_Zilla, второй сработал отлично!!!!!!!
теперь надо разобраться с сетевым подключением....
буду ждать ответов

AlexThePeacemaker
21-11-2011, 11:51
А можно как-нибудь получить значение параметра?
Например, прогамма прописывается в ветку реестра HKEY_LOCAL_MACHINE\SOFTWARE\Application
В ветке находится параметр AppPath=C:\Program Files\Application
Можно ли получить значение AppPath и сделать его переменной (set X=AppPath)?

sLiDeR-X
21-11-2011, 13:03
AlexThePeacemaker,
@echo off

set Application=7-Zip
set AppPath=path

REG QUERY HKLM\SOFTWARE\%Application% /v %AppPath%>1.txt
findstr /I "%AppPath%" 1.txt>2.txt

for /f "tokens=3 delims= " %%a in (2.txt) do set X=%%a

echo Переменной X присвоено значение %X%

del /q 1.txt
del /q 2.txt

pause

Foreigner
21-11-2011, 19:38
@echo off
setlocal

set "regpath=HKEY_LOCAL_MACHINE\SOFTWARE\APPLICATION"

for /f "tokens=3*" %%i in (' reg query "%regpath%" /v "APPPATH" ') do call:set %%i %%j
echo %X%
goto:eof

:set
set "X=%*"


Красным выделены твои названия ключа и параметра

AlexThePeacemaker
26-11-2011, 11:40
А если значения "Application" и "AppPath" содержат пробелы?

Foreigner
26-11-2011, 13:25
А если значения "Application" и "AppPath" содержат пробелы? »
Какая разница, с пробелом или без? Вот если параметр "AppPath" в своем названии ( не значении ) будет содержать пробел, например "App Path", вот тогда надо менять токен:

for /f "tokens=4*" %%i in (' reg query "%regpath%" /v "APP PATH" ') do ....

AlexThePeacemaker
26-11-2011, 17:02
Foreigner, дело в том, что APPLICATION может иметь значение типа "Mega Soft"

Foreigner
26-11-2011, 17:28
дело в том, что APPLICATION может иметь значение типа "Mega Soft" »
И что?

AlexThePeacemaker
27-11-2011, 12:46
То, что несмотря на кавычки вместо пути к программе в результате выдается "VERSION 3.0", хотя такого значения вообще нет в искомой ветке реестра. Кстати, такого значения как "VERSION 3.0" вообще нет у меня в реестре

Iska
27-11-2011, 13:21
AlexThePeacemaker, зато есть в выводе «reg.exe» ;).

P.S. Имеет смысл начинать учиться.

Foreigner
27-11-2011, 14:52
AlexThePeacemaker,
Приведи конкретный пример ключа реестра и его параметров. Например где все с пробелами:

@echo off
setlocal

set "regpath=HKEY_CURRENT_USER\Software\Opera Software"

for /f "tokens=5*" %%i in (' reg query "%regpath%" /v "Last CommandLine v2" ') do call:set %%i %%j
echo %X%
goto:eof

:set
set "X=%*"

Получаю:

C:\Program Files (x86)\Opera\Opera.exe /uninstall

Ну и конечно reg delete "hkcu\software\opera software" /f

Foreigner
27-11-2011, 15:19
Чтоб не считать токены вручную:

@echo off
setlocal

set "regkey=HKEY_CURRENT_USER\Software\Some Test Key"
set "regparam=Parameter of Key"

set "tok=2"
for %%i in (%regparam%) do set /a tok+=1

for /f "tokens=%tok%*" %%i in (' reg query "%regkey%" /v "%regparam%" ') do call:set %%i %%j
echo %X%
goto:eof

:set
set "X=%*"

To что зеленым -- изменяемая часть, сам ключ и нужный параметр ключа.




© OSzone.net 2001-2012