Код:

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
Вот так получилось. Скрипт находит и ставит EFI Hard Drive первым в списке загрузок в
ефи биосе. В других пк имя стандартной бут записи может быть другое, например Hard Drive.
В моем случае изменения порядка загрузки в нврам постоянные, слышал, что bcdedit на некоторых пк далает это разово, видимо, не хочет/не может синхронизировать свой bcd c nvram.
Зачем это нужно? Для моей программки переключения виндовс/андроид в дуалбут на планшете, именно этот скрипт она запускает только один раз при первом запуске. А переключение происходит подменой/переименованием виндового или андроидыного загрузчика в правильное имя bootx64.efi на ефи разделе, пару проверок и ребут. А если будет в биосе по дефолту виндовс или андроид в загрузке, будет ошибка секур бута. Имя на всех планшетах этой модели одинаковое, а guid нужно получить, так как он разный в каждой Виндовс.
А перезаписывать каждый раз порядок записей в нврам далеко не лучший вариант, да и в моем случае это еще и не работает для переключения дуалбута, (особенность секур бут и автоматически переключаемых асрi профилей GMIN/Windows в биос). Две виндовс можно, вин/андр не получится переключить.
Всегда пожалуйста.
Нашел интересный ошибка в скрипте и исправил. Оказывается в русской виндовс вывод bcdedit весь на английском... кроме ключевого в поиске слова identifier - идентификатор! И в русском и, возможно и в других не англ. образах, этот скрипт не найдет гуид). Правильнее сразу искать по {...} и тогда не важен язык системы.