Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] CMD скрипт, для чтения выходных значений BcdEdit

Ответить
Настройки темы
CMD/BAT - [решено] CMD скрипт, для чтения выходных значений BcdEdit
Den Den вне форума

Аватара для Den

Новый участник


Сообщения: 29
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Den
Дата: 31-03-2012
Всем доброго дня!
Уважемые специалисты посмотрите пожалуйста! Ну очень нужно!
Мне необходим 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

Отправлено: 18:56, 30-03-2012

 
Den Den вне форума Автор темы

Аватара для Den

Новый участник


Сообщения: 29
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

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

Отправлено: 12:11, 31-03-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

Den Den вне форума Автор темы

Аватара для Den

Новый участник


Сообщения: 29
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 19:12, 31-03-2012 | #3


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Если правильно понял:
Код: Выделить весь код
@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
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:34, 31-03-2012 | #4

Den Den вне форума Автор темы

Аватара для Den

Новый участник


Сообщения: 29
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

спасибо

Отправлено: 20:01, 31-03-2012 | #5

Den Den вне форума Автор темы

Аватара для Den

Новый участник


Сообщения: 29
Благодарности: 0

Профиль | Отправить PM | Цитировать


Действительно, по промежуточным результатам видно, как скрипт проверяет значение и заменяет его.
Единственное, не могу смодулировать физически такую ситуацию, что 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

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

Последний раз редактировалось Den, 31-03-2012 в 21:31.


Отправлено: 20:37, 31-03-2012 | #6


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Цитата Den:
т.е. чтобы присвоение значения делал не оператор FOR, а сама программа bcdedit? »
Так оно и есть. В FOR забирается вывод bcdedit.
Код: Выделить весь код
if not "%device%"=="%osdevice%" bcdedit /set ...
Проверяет на одинаковые значения, если проверять на пустое значение osdevice, то:
Код: Выделить весь код
if not defined osdevice bcdedit /set ....
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:27, 31-03-2012 | #7

Den Den вне форума Автор темы

Аватара для Den

Новый участник


Сообщения: 29
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 09:21, 01-04-2012 | #8


Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


@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

-------
Garric


Отправлено: 18:17, 20-05-2021 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] CMD скрипт, для чтения выходных значений BcdEdit

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] CMD-скрипт для удаления временных файлов old_nick Скриптовые языки администрирования Windows 23 20-02-2015 08:46
CMD/BAT - [решено] написать скрипт cmd используя cmd оператор for Den Скриптовые языки администрирования Windows 6 29-03-2012 09:48
VBS/WSH/JS - [решено] Скрипт VBS для Чтения из файла Excel и записи в Access NecroTYN Скриптовые языки администрирования Windows 5 27-01-2012 12:18
Разное - Конвертация значений reg-файлов в то, что надо прописать в cmd Eugene R Microsoft Windows 2000/XP 6 16-11-2011 09:35
CMD/BAT - [решено] CMD-скрипт для удаление пустых ключей реестра ADSL3MD Скриптовые языки администрирования Windows 4 20-09-2011 19:16




 
Переход