|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Найти нужный guid загрузочной записи по ее имени в биос и установить первой в списке |
|
CMD/BAT - Найти нужный guid загрузочной записи по ее имени в биос и установить первой в списке
|
Ветеран Сообщения: 1186 |
Профиль | Отправить PM | Цитировать
Надумал так:
bcdedit /enum firmware>%userprofile%\desktop\efi.txt выводит список записей в файл или может прямо в окно командной строки, интересует стандартная запись прошивки EFI Hard Drive, выдает такое в консоль или в файл efi.txt Firmware Boot Manager --------------------- identifier {fwbootmgr} displayorder {961d2ca6-ccca-11e7-ad4a-c153e375ded0} {bootmgr} {961d2ca7-ccca-11e7-ad4a-c153e375ded0} timeout 2 Windows Boot Manager -------------------- identifier {bootmgr} device partition=\Device\HarddiskVolume7 path \EFI\Microsoft\Boot\bootmgfw.efi description Windows Boot Manager locale en-US inherit {globalsettings} default {current} resumeobject {961d2caa-ccca-11e7-ad4a-c153e375ded0} displayorder {current} toolsdisplayorder {memdiag} timeout 30 Firmware Application (101fffff) ------------------------------- identifier {961d2ca6-ccca-11e7-ad4a-c153e375ded0} -вот он, родимый description EFI Hard Drive Firmware Application (101fffff) ------------------------------- identifier {961d2ca7-ccca-11e7-ad4a-c153e375ded0} description EFI Internal Shell bcdedit /set {fwbootmgr} displayorder {сюдаGUID} /addfirst Еще можно прочитать в реестре, вот командой: regedit.exe -ea C:\environment.reg "HKEY_LOCAL_MACHINE\BCD00000000\Objects" Есть такая строка: [HKEY_LOCAL_MACHINE\BCD00000000\Objects\{dcb4cb63-cfc5-11e7-97d9-806e6f6e6963}\Elements\12000004] "Element"="EFI Hard Drive" Красиво было бы прочитать его без использовпния файла, но и с использованием тхт файла тоже красиво. Спасибо! |
|
Отправлено: 23:48, 23-11-2017 |
Ветеран Сообщения: 1186
|
Профиль | Отправить PM | Цитировать bcdedit /enum firmware>enum.txt set lgfl=enum.txt set nwlg=outlog.txt ::указать кол-во вывода строк до искомой set num1=3 ::указать кол-во вывода строк после искомой set num2=0 set word=EFI Hard Drive cls setlocal EnableDelayedExpansion for /f "delims=: tokens=1" %%a in ('findstr /n /r /c:"%words%" %lgfl%') do (call :pars %%a) SetLocal EnableExtensions for /f "tokens=2-5" %%b in ('findstr /r "{.*}" %nwlg%') do set guid=%%b echo guid EFI Hard Drive=%guid% pause :: после отладки и вывода верного guid, раскомментировать команду. ::bcdedit /set {fwbootmgr} displayorder %guid% /addfirst pause exit /b :pars set /a isum=%num1%+%num2%+1 if %num1% lss %1 ( set /a num=%1-%num1%-1 set "skp=skip=!num! " ) else ( set "skp=" set /a isum=%num2%+%1 ) for /f "%skp%tokens=*" %%a in (%lgfl%) do ( set /a isum-=1 echo %%a echo %%a>>%nwlg% if !isum! lss 1 exit /b) exit /b В моем случае изменения порядка загрузки в нврам постоянные, слышал, что bcdedit на некоторых пк далает это разово, видимо, не хочет/не может синхронизировать свой bcd c nvram. Зачем это нужно? Для моей программки переключения виндовс/андроид в дуалбут на планшете, именно этот скрипт она запускает только один раз при первом запуске. А переключение происходит подменой/переименованием виндового или андроидыного загрузчика в правильное имя bootx64.efi на ефи разделе, пару проверок и ребут. А если будет в биосе по дефолту виндовс или андроид в загрузке, будет ошибка секур бута. Имя на всех планшетах этой модели одинаковое, а guid нужно получить, так как он разный в каждой Виндовс. А перезаписывать каждый раз порядок записей в нврам далеко не лучший вариант, да и в моем случае это еще и не работает для переключения дуалбута, (особенность секур бут и автоматически переключаемых асрi профилей GMIN/Windows в биос). Две виндовс можно, вин/андр не получится переключить. Цитата severagent007:
Нашел интересный ошибка в скрипте и исправил. Оказывается в русской виндовс вывод bcdedit весь на английском... кроме ключевого в поиске слова identifier - идентификатор! И в русском и, возможно и в других не англ. образах, этот скрипт не найдет гуид). Правильнее сразу искать по {...} и тогда не важен язык системы. |
|
Последний раз редактировалось severagent007, 26-11-2017 в 00:34. Отправлено: 19:08, 24-11-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Создание папок из txt файла | nineline | Скриптовые языки администрирования Windows | 41 | 22-01-2021 14:54 | |
CMD/BAT - [решено] Переменная? Подстановка в команду данных из файла. Не получается.. | NLOLegion | Скриптовые языки администрирования Windows | 4 | 04-11-2017 13:36 | |
Скрипт вывода активных URL из файла | XXXp | Вебмастеру | 4 | 03-05-2014 12:03 | |
CMD/BAT - [решено] помогите дописать команду - чтение строк из файла | jannaly | Скриптовые языки администрирования Windows | 4 | 02-06-2012 17:38 | |
CMD/BAT - [решено] Созд.*.txt по имени файла, с перемещением *.txt и файла в папку с именем файла. | OSArev | Скриптовые языки администрирования Windows | 2 | 30-01-2011 11:58 |
|