Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Bat ищет ключ реестра и (http://forum.oszone.net/showthread.php?t=220256)

zion87 11-11-2011 23:27 1793355

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

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

Foreigner 12-11-2011 16:29 1793624

zion87,
Код:

@echo off
setlocal

set "regpath=hkcu\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartme\{645FF040-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 1794007

Или так:

Код:

@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 1794697

Спасибо огромное God_Zilla, второй сработал отлично!!!!!!!
теперь надо разобраться с сетевым подключением....
буду ждать ответов

AlexThePeacemaker 21-11-2011 11:51 1799730

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

sLiDeR-X 21-11-2011 13:03 1799790

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 1800095

Код:

@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 1803683

А если значения "Application" и "AppPath" содержат пробелы?

Foreigner 26-11-2011 13:25 1803717

Цитата:

Цитата AlexThePeacemaker
А если значения "Application" и "AppPath" содержат пробелы? »

Какая разница, с пробелом или без? Вот если параметр "AppPath" в своем названии ( не значении ) будет содержать пробел, например "App Path", вот тогда надо менять токен:
Код:

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

AlexThePeacemaker 26-11-2011 17:02 1803822

Foreigner, дело в том, что APPLICATION может иметь значение типа "Mega Soft"

Foreigner 26-11-2011 17:28 1803830

Цитата:

Цитата AlexThePeacemaker
дело в том, что APPLICATION может иметь значение типа "Mega Soft" »

И что?

AlexThePeacemaker 27-11-2011 12:46 1804157

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

Iska 27-11-2011 13:21 1804175

AlexThePeacemaker, зато есть в выводе «reg.exe» ;).

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

Foreigner 27-11-2011 14:52 1804217

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 1804237

Чтоб не считать токены вручную:
Код:

@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 что зеленым -- изменяемая часть, сам ключ и нужный параметр ключа.


Время: 18:21.

Время: 18:21.
© OSzone.net 2001-