Показать полную графическую версию : [решено] 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
Добрый день, уважаемые форумчане!
Посмотрите пожалуйста еще раз мою задачу, может кто-нибудь помочь?
Надеюсь, вы сможете!
Хорошего дня и прекрасного всем настроения!
Пускаю пузыри!
Неужели никто не сможет помочь?!
Foreigner
31-03-2012, 19:34
Если правильно понял:
@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
Foreigner, большое спаибо за ответ!!!
А в каком месте он проверяет что значение osdevicе пусто?
спасибо
Действительно, по промежуточным результатам видно, как скрипт проверяет значение и заменяет его.
Единственное, не могу смодулировать физически такую ситуацию, что Osdevice неопределено.
Но возник такой вопрос, можно ли строку
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
т.е. чтобы присвоение значения делал не оператор FOR, а сама программа bcdedit? »
Так оно и есть. В FOR забирается вывод bcdedit.
if not "%device%"=="%osdevice%" bcdedit /set ...
Проверяет на одинаковые значения, если проверять на пустое значение osdevice, то:
if not defined osdevice bcdedit /set ....
Доброе утро, Foreigner, !
Спасибо за подробные ответы!
Хорошего дня!
инспектор
20-05-2021, 18:17
@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
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.