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

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

Den 30-03-2012 18:56 1890245

CMD скрипт, для чтения выходных значений BcdEdit
 
Всем доброго дня!
Уважемые специалисты посмотрите пожалуйста! Ну очень нужно!
Мне необходим CMD скрипт, который читает выходные значения “bcdedit /enum” сравнивает значения Device и OSDevice и в случае неопределенного значения OSDevice в Windows Boot Loader (например после неудачного SysPrep) присваивает ему значение Device используя “bcdedit /set”
Спасибо !

c:\pc>bcdedit

Windows Boot Manager
--------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume1
description Windows Boot Manager
locale en-US
inherit {globalsettings}
default {current}
resumeobject {91134a75-d82c-11e0-81c4-b5e2b548a783}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30

Windows Boot Loader
-------------------
identifier {current}
device partition=C:
path \Windows\system32\winload.exe
description Windows 7
locale en-US
inherit {bootloadersettings}
recoverysequence {91134a77-d82c-11e0-81c4-b5e2b548a783}
recoveryenabled Yes
osdevice partition=C:
systemroot \Windows
resumeobject {91134a75-d82c-11e0-81c4-b5e2b548a783}
nx OptIn

Den 31-03-2012 12:11 1890616

Добрый день, уважаемые форумчане!
Посмотрите пожалуйста еще раз мою задачу, может кто-нибудь помочь?

Надеюсь, вы сможете!
Хорошего дня и прекрасного всем настроения!

Den 31-03-2012 19:12 1890895

Пускаю пузыри!
Неужели никто не сможет помочь?!

Foreigner 31-03-2012 19:34 1890919

Если правильно понял:
Код:

@echo off
setlocal

for /f "tokens=1,3 delims== " %%i in (' bcdedit ^| findstr ".*device" ') do set "%%i=%%j"

if not "%device%"=="%osdevice%" bcdedit /set bla-bla-bla


Den 31-03-2012 20:01 1890934

Foreigner, большое спаибо за ответ!!!
А в каком месте он проверяет что значение osdevicе пусто?

спасибо

Den 31-03-2012 20:37 1890948

Действительно, по промежуточным результатам видно, как скрипт проверяет значение и заменяет его.
Единственное, не могу смодулировать физически такую ситуацию, что Osdevice неопределено.
Но возник такой вопрос, можно ли строку

Цитата:

Цитата Foreigner
if not "%device%"=="%osdevice%" bcdedit /set bla-bla-bla »

записать как

if not bcdedit /set"%device%"=="%osdevice%" ,

т.е. чтобы присвоение значения делал не оператор FOR, а сама программа bcdedit?

Если так нельзя, то каким образом можно вставить в параметры bcdedit значения device
и еще в выводе команды bcdedit, к сожалению, дважды присутствует значение device, а нам необходимо проверить, то что в Windows Boot Loader

благодарю премного.

Foreigner 31-03-2012 23:27 1891053

Цитата:

Цитата Den
т.е. чтобы присвоение значения делал не оператор FOR, а сама программа bcdedit? »

Так оно и есть. В FOR забирается вывод bcdedit.
Код:

if not "%device%"=="%osdevice%" bcdedit /set ...
Проверяет на одинаковые значения, если проверять на пустое значение osdevice, то:
Код:

if not defined osdevice bcdedit /set ....

Den 01-04-2012 09:21 1891152

Доброе утро, Foreigner, !
Спасибо за подробные ответы!
Хорошего дня!

инспектор 20-05-2021 18:17 2958541

@echo off
chcp 866
set NLM=^


set NL=^^^%NLM%%NLM%^%NLM%%NLM%
setlocal
::bcdedit
for /f "tokens=1-10 delims= " %%a in (' bcdedit ^| findstr ".*" ') do (
if "%%a" == "Диспетчер" if "%%b" == "загрузки" echo %NL%Диспетчер загрузки Windows%NL%-------------------
if "%%a" == "идентификатор" echo идентификатор: %%b %%c %%d %%e %%f %%g %%h %%i %%j
if "%%a" == "device" echo device= %%b %%c %%d %%e %%f %%g %%h %%i %%j
if "%%a" == "path" echo path: %%b %%c %%d %%e %%f %%g %%h %%i %%j
if "%%a" == "description" echo description: %%b %%c %%d %%e %%f %%g %%h %%i %%j
if "%%a" == "locale" echo locale: %%b %%c %%d %%e %%f %%g %%h %%i %%j
if "%%a" == "inherit" echo inherit: %%b %%c %%d %%e %%f %%g %%h %%i %%j
if "%%a" == "default" echo default: %%b %%c %%d %%e %%f %%g %%h %%i %%j
if "%%a" == "resumeobject" echo resumeobject: %%b %%c %%d %%e %%f %%g %%h %%i %%j
if "%%a" == "toolsdisplayorder" echo toolsdisplayorder: %%b %%c %%d %%e %%f %%g %%h %%i %%j
if "%%a" == "timeout" echo timeout: %%b %%c %%d %%e %%f %%g %%h %%i %%j
if "%%a" == "Загрузка" if "%%b" == "Windows" echo %NL%Загрузка Windows%NL%-------------------
if "%%a" == "recoveryenabled" echo recoveryenabled: %%b %%c %%d %%e %%f %%g %%h %%i %%j
if "%%a" == "isolatedcontext" echo isolatedcontext: %%b %%c %%d %%e %%f %%g %%h %%i %%j
if "%%a" == "allowedinmemorysettings" echo allowedinmemorysettings: %%b %%c %%d %%e %%f %%g %%h %%i %%j
if "%%a" == "osdevice" echo osdevice: %%b %%c %%d %%e %%f %%g %%h %%i %%j
if "%%a" == "systemroot" echo systemroot: %%b %%c %%d %%e %%f %%g %%h %%i %%j
if "%%a" == "nx" echo nx: %%b %%c %%d %%e %%f %%g %%h %%i %%j
if "%%a" == "bootmenupolicy" echo bootmenupolicy: %%b %%c %%d %%e %%f %%g %%h %%i %%j
if "%%a" == "hypervisorlaunchtype" echo hypervisorlaunchtype: %%b %%c %%d %%e %%f %%g %%h %%i %%j
)
pause


Время: 02:27.

Время: 02:27.
© OSzone.net 2001-