![]() |
Как найти строку в блоке вывода bat, но вставить другую?
Есть вывод команды bcdedit
Код:
Приложение микропрограммы (101fffff) Как это сделать? |
Можете на пальцах показать, что нужно взять и куда нужно вставить?
|
Цитата:
Код:
{08466ee1-90f9-11ef-a538-806e6f6e6963} Код:
bcdedit /set {fwbootmgr} bootsequence ВставитьСюда |
Типа такого?
Просто перебираем строки, где присваиваем идентификатор и ищем слово ubuntu во втором параметре: Код:
@echo off |
Цитата:
Код:
@echo off |
Выполнение bcdedit требует повышенных прав.
В таком сценарии перезагрузки не будет, т.к. echo - это вывод на экран. |
Цитата:
Плюс из cmd выполняется такая строка Код:
bcdedit /set {fwbootmgr} bootsequence {f749bee3-7ada-11ef-a4ee-806e6f6e6963} & shutdown -r -f -t 0 Цитата:
Код:
@echo off |
Цитата:
Цитата:
Цитата:
Пробуйте так: Код:
@echo off Цитата:
|
Цитата:
Цитата:
До этого было всё и UAC и антивирус и чего ещё только не было и переустанавливался бывало по 5-6 раз на день :) Попробовал вот так Код:
@echo off Попробовал с echo - пустой вывод. Так понимаю, что echo off мешает, убрал, белеберда какая-то получилась. Цитата:
Цитата:
Код:
bcdedit /enum firmare Куда нужно вставить команды? |
Т.к. в сценарии используется кириллические символы, убедитесь, что файл сценария сохранён в кодировке cp866.
|
Цитата:
Есть проблема с Easy2Boot, у него два раздела и оба отображаются как UEFI OS, пробовал менять названия, но насколько я понял, UEFI материнки начинает "тупить" и менять эти названия, сначала на своё какое-то, по итогу возвращает в UEFI OS, наверное исходя из того, что он видит на самом файле, который лежит в разделе. Но эти два раздела всегда идут вместе и порядок не меняется. Можно ли их как-то обозначить в скрипте раздельно? Код:
0 : Windows 10 Р?Р?С?Р?Р° |
Цитата:
Как вариант, найти тот параметр, который будет отличаться в этих записях. Т.е. опираться не на description , а на что-то другое и/ или комбинацию параметров; Цитата:
|
Цитата:
Код:
Приложение микропрограммы (101fffff) Цитата:
Менял с помощью bcdedit Код:
bcdedit /set {408dc4d5-903f-11ef-a533-806e6f6e6963} description "Kubuntu from LEVEN" |
|
Цитата:
Цитата:
Код:
@echo off |
Цитата:
Код:
@echo off |
Цитата:
Там наверное ошиблись, не идентификатор, а device нужно прописывать? Но пробовал и так, и так. |
Код:
@echo off Цитата:
|
Цитата:
![]() ![]() И ожидания для нажатия клавиши тоже нет. |
Цитата:
Скрытый текст
![]() |
|
Цитата:
Цитата:
|
Цитата:
Ааа всё, я не обращал даже внимания, как так, одинаковые вольюмы ... Так тогда не за что и цепляться, чтоб наверняка. |
Цитата:
Или покажите полный вывод записей bcdedit, возможно, что что-нибудь и можно будет придумать. какую-нибудь уникальную комбинацию. |
Цитата:
Хотя чёт и с кодировкой не то, пишет вроде 866, но уже и тот вариант, что работал, уже не выдаёт ID, если echo приписать. Но если отключаю echo off, то в выводе нормальная кириллица, не кракозябры. |
Если проблема с запуском нужной ОС, наверное нужно добавить в код приоритет загрузки, типа
Код:
bcdedit bootsequence {08466ee1-90f9-11ef-a538-806e6f6e6963} /addfirst |
Цитата:
|
Цитата:
Вот и пример Вам выше, пжлст. - совпадение параметра device у некоторых записей. Имея на руках весь вывод, эту ситуацию можно было бы обыграть в едином сценарии. |
Цитата:
Скрытый текст
Код:
C:\Users\BlagoYar > bcdedit /enum firmware 15:17:02 Цитата:
Не катит, там где нужно, вообще отсутствует device. если убрать букву диска. |
Цитата:
Код:
@echo off Скрытый текст
![]() |
Понятно, что изначально хотелось выбирать идентификатор по описанию, но, какой смысл в этой всей чехарде, когда проще прописать идентификаторы напрямую и менять конфигурацию?
|
Цитата:
Ладно, хрен с ним. Спасибо, что старались помочь. ПС. Спойлер не открывается. Ничего не показывает. Цитата:
|
Цитата:
Цитата:
Но, в любом случае, его нужно/ нужно будет чуть-чуть переделать и обрабатывать параметры в другом порядке, сначала decription, после device, и сделать второй параметр не обязательным. |
Цитата:
Код:
@echo off Скрытый текст
![]() |
Цитата:
Цитата:
ПС. Про кодировку помню. |
Цитата:
Вот, сценарий обрабатывающий вывод команды: Код:
bcdedit /enum Код:
@echo off Скрытый текст
![]() |
Цитата:
![]() С кавычками заработало. То бишь кавычки я так понимаю в любом случае нужны, даже если нет пробелов/спец. символов. Но заработало тоже не до конца. Код:
"Изменяем загрузочную запись с описанием "Arch"" |
Цитата:
Всё, должно работать. На вашем скрине запечатлён сценарий из предшествующего ответа: Цитата:
Цитата:
|
Цитата:
Скрытый текст
Код:
@echo off А в так сказать параметрах к bat файлу операторы сравнения работать будут, точнее должны? Например для поиска того же UEFI OS, если искать по второму параметру, то может быть как указана буква к диску, так и volume. |
Цитата:
|
Цитата:
И например указать для поиска как-то так (не знаю как в с bat файлом это делается, но например в AutoIt оператор OR) Код:
"E:\Programs\Boot\Reboot\Reboot to Arch.bat" "Arch" "partition=\Device\HarddiskVolume7" "Arch" "partition=\Device\HarddiskVolume7" OR "partition=H:" |
Цитата:
|
Цитата:
Цитата:
Конкретно этого примера - так если отсутствует разница, какое устройство использовать, то опускайте второй параметр, параметр device и меняйте только первому, по параметру description. Ведь Вы же всяко стремитесь к тому, что бы задавать записям загрузчика description уникальными. |
Цитата:
Кстати, я так понял, что если есть два одинаковых description, то поиск по второму параметру не катит. Вот выполняю Код:
"E:\Programs\Boot\Reboot\Reboot to Arch.bat" "UEFI OS" "partition=\Device\HarddiskVolume18" Код:
Приложение микропрограммы (101fffff) Цитата:
|
Цитата:
Скрытый текст
![]() |
Цитата:
https://youtu.be/BiPeL-1Iv9g |
Цитата:
Покажите результат выполнения только по description, только по первому параметру "UEFI OS". |
Цитата:
|
Ну, теперь всё ясно-понятно. Вы используете не тот сценарий, вроде как два раза указывал, какой использовать, этот.
|
Цитата:
https://youtu.be/tpwMIgpnT2M ПС. Так даже вообще уже ничего не находит. Тот же Arch уже не видит. |
Цитата:
Работа сценария Мною проверяется, прежде чем код публикуется на форуме. |
Цитата:
Цитата:
Кстати и оно логично, что не находит, потому что команда bcdedit /enum выводит только данные о текущей ОС, а с firmware все записи. добавил соответствующий параметр и уже находит и Arch, и ubuntu и т.д., и даже UEFI OS нашло по одному только description. |
Цитата:
Не придавал этому значения, т.к. располагаю наипростейшими загрузочными записями; Цитата:
|
Цитата:
|
Цитата:
|
Чисто для коллекции вариант на Powershell
Код:
$bcdedit = (gc C:\temp\bcdedit.txt -raw -Encoding oem) ` Код:
($bcdedit |? description -eq ubuntu).идентификатор |
Код:
((sls 'description\s+ubuntu' C:\temp\bcdedit.txt -co 3,0).Context.PreContext | sls '{[0-9a-f-]+}').Matches.Value |
|
Время: 07:07. |
Время: 07:07.
© OSzone.net 2001-