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

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

root221 22-11-2012 22:32 2030766

Найти в реестре параметр и записать в переменную имя ветки в которой он находится
 
Здравствуйте,


Нужно найти в этой ветке
Код:

hklm\system\currentcontrolset\control\class\{4D36E972-E325-11CE-BFC1-08002bE10318}
значение ключа, которое будет называться "VLanAdapter" и после того как наидено это значение, нужно записать имя куста в котором оно наидено, в переменную %RegCust%

Iska 22-11-2012 22:49 2030780

root221, что Вы подразумеваете под «именем куста»?

root221 22-11-2012 23:04 2030792

Цитата:

Цитата Iska
root221, что Вы подразумеваете под «именем куста»? »

ну там есть имя ветки, наверно так будет правельнее

001
002
003 и.т.д

вот в одной из них если найдётся параметр с ключём "VLanAdapter", то имя ветки в которой скрипт найдёт параметр с ключём "VLanAdapter", надо записать в переменную %RegCust%

Iska, надеюсь что вы не просто так вопрос задали, а хотите мне помочь )

Foreigner 22-11-2012 23:35 2030822

root221,
Без проверки на ошибки, т.е. подразумевается, что свойство "VLanAdapter" есть в одном из параметров:
Код:

@echo off
setlocal

set "regpath=hklm\system\currentcontrolset\control\class\{4D36E972-E325-11CE-BFC1-08002bE10318}"

for /f "tokens=*" %%i in (' reg query "%regpath%" /v "VLanAdapter" /s ') do call:set "%%i"
echo %regcust%

:set
if not defined regcust set "regcust=%~1"


root221 23-11-2012 00:03 2030847

Foreigner, странно, ставлю паузу после echo %regcust% и в консоль вываливается сообщение, Ошибка: Слишком много параметров в командной строке.

Foreigner 23-11-2012 00:15 2030853

root221, забыл goto:eof или exit /b после echo %regcust%

Цитата:

Ошибка: Слишком много параметров в командной строке.
Странно. У меня такой ошибки нет.

root221 23-11-2012 00:18 2030854

Цитата:

Цитата Iska
root221, что Вы подразумеваете под «именем куста»? »

Вы для чего интересовались ? для себя? или вы что-то вы не поняли и хотели уточнить для того что-бы помочь мне?

Цитата:

Цитата Foreigner
root221, забыл goto:eof или exit /b после echo %regcust%
Цитата:
Ошибка: Слишком много параметров в командной строке.
Странно. У меня такой ошибки нет. »

Наверно из-за Семерки, у меня просто XP

Iska 23-11-2012 02:16 2030916

Цитата:

Цитата root221
Цитата:

Цитата root221
нужно записать имя куста в котором оно наидено, »

Цитата:

Цитата Iska
root221, что Вы подразумеваете под «именем куста»? »

ну там есть имя ветки, наверно так будет правельнее »

Правильно будет — «раздел»: Основы работы с реестром Windows: Терминология.

читать дальше »
Цитата:

Цитата root221
Вы для чего интересовались ? для себя? или вы что-то вы не поняли и хотели уточнить для того что-бы помочь мне? »

Возможность помощи обусловлена пониманием. Понимание настоятельно требует одинакового употребления и восприятия информации (в первую очередь — терминов). Пока мы не прояснили, что Вы понимаете под «именем куста» — сама возможность выхода полезной информации от меня к Вам была равна нулю.


PowerShell:
Код:

$sPath = "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002Be10318}"

Get-ItemProperty -Path "Registry::$sPath\*" | `
    Where-Object -FilterScript {$_.VLanAdapter} | `
        Select-Object -Property @{Name="SubKey"; Expression = {($_.PSPath).Replace("Microsoft.PowerShell.Core\Registry::", "")}}, VLanAdapter | `
            Format-Table -AutoSize


root221 23-11-2012 21:15 2031439

Iska, Я вас понял, вы в большей степени специальзируетесь в PowerShell, к сожалению решения на PowerShell мне не подходит и всеравно я вам благодарен за участие и попытке помочь моей проблеме.

А вобще мне надо было, что бы CMD скрипт работал примерно так-же как macshift, т.е. по имени адаптера которое у меня будет находится в переменной, находил нужную ветку в реестре, которая относится к адаптеру с этим именем которое будет в переменной и изменял MAC Адрес тому устройству у которого будет имя из переменной т.е. просто добавлял ключ Macaddress с со значением которое тоже будет в переменной ну и потом с помощью другой утилитым DevCon которая у меня так-же имеется, перезапускал сетевое устройство и изменял на устройстве мак адрес которое например, с именем "VLanAdapter" .

Как-то так.

Iska 24-11-2012 00:44 2031555

Цитата:

Цитата root221
Iska, Я вас понял, вы в большей степени специальзируетесь в PowerShell, »

Увы. Неспешно учусь (предыдущий пост как раз и есть — обучение) ему эдак пятый год, не меньше. У меня всё никак не возникнет настоятельной потребности к его изучению по причине отсутствия надобности.

Цитата:

Цитата root221
к сожалению решения на PowerShell мне не подходит »

Отчего так? Что мешает?

root221 25-11-2012 04:56 2032275

Цитата:

Цитата Iska
Отчего так? Что мешает? »

Да ничего не мешает, просто не хочу я, внедряться в него.

Iska 25-11-2012 07:54 2032294

root221, ясно.


Время: 19:20.

Время: 19:20.
© OSzone.net 2001-