Показать полную графическую версию : [решено] Как найти строку в блоке вывода bat, но вставить другую?
Mancoffee
25-10-2024, 12:43
Строки сравниваются полностью »
Наверное неправильно поняли, например один и тот же раздел может быть так "partition=\Device\HarddiskVolume7", а если подключена буква диска, то вот так "partition=H:"
И например указать для поиска как-то так (не знаю как в с bat файлом это делается, но например в AutoIt оператор OR)
"E:\Programs\Boot\Reboot\Reboot to Arch.bat" "Arch" "partition=\Device\HarddiskVolume7" "Arch" "partition=\Device\HarddiskVolume7" OR "partition=H:"
И например указать для поиска как-то так »
Ну, можно и третий параметр в сценарии обрабатывать. Давайте попробуем что-нибудь придумать.
И например указать для поиска как-то так »
"Arch" "partition=\Device\HarddiskVolume7" OR "partition=H:" »
Только сейчас понял эту строку.
Конкретно этого примера - так если отсутствует разница, какое устройство использовать, то опускайте второй параметр, параметр device и меняйте только первому, по параметру description.
Ведь Вы же всяко стремитесь к тому, что бы задавать записям загрузчика description уникальными.
Mancoffee
25-10-2024, 14:25
Давайте попробуем что-нибудь придумать. »
Ну мне думать нечем, в смысле знаний по bat в сложных вещах нет, они близятся к нулю :)
Кстати, я так понял, что если есть два одинаковых description, то поиск по второму параметру не катит.
Вот выполняю
"E:\Programs\Boot\Reboot\Reboot to Arch.bat" "UEFI OS" "partition=\Device\HarddiskVolume18"
И пустота, хотя в выводе он есть
Приложение микропрограммы (101fffff)
-------------------------------
идентификатор {58ec2b43-90b8-11ef-a537-806e6f6e6963}
device partition=\Device\HarddiskVolume18
path \EFI\BOOT\BOOTX64.EFI
description UEFI OS
Ведь Вы же всяко стремитесь к тому, что бы задавать записям загрузчика description уникальными. »
Ну это да, но как мы с вами выяснили, это либо невозможно (будет сбрасываться на оригинал), либо как-то сложно.
Кстати, я так понял, что если есть два одинаковых description, то поиск по второму параметру не катит.
Вот выполняю »
Всё катит, на примере Вашего вывода:
https://i.ibb.co/Tr11QT5/Image-012.png
Mancoffee
25-10-2024, 15:21
Всё катит, на примере Вашего вывода: »
Тогда я не понимаю, как это работает
https://youtu.be/BiPeL-1Iv9g
Тогда я не понимаю, как это работает »
Как работает показано выше, на скрине.
Покажите результат выполнения только по description, только по первому параметру "UEFI OS".
Mancoffee
25-10-2024, 17:18
Покажите результат выполнения только по description, только по первому параметру "UEFI OS". »
https://youtu.be/b9nW3vrRNG8
Ну, теперь всё ясно-понятно. Вы используете не тот сценарий, вроде как два раза указывал, какой использовать, этот (http://forum.oszone.net/post-3032023-36.html).
Mancoffee
25-10-2024, 19:13
Ну, теперь всё ясно-понятно »
Всё равно непонятно :)
https://youtu.be/tpwMIgpnT2M
ПС. Так даже вообще уже ничего не находит. Тот же Arch уже не видит.
ПС. Так даже вообще уже ничего не находит. Тот же Arch уже не видит. »
Возможно, что Вы просто не сохранили файл сценария, а весь остальной код у вас закомментирован.
Работа сценария Мною проверяется, прежде чем код публикуется на форуме.
Mancoffee
25-10-2024, 19:56
Возможно, что Вы просто не сохранили файл сценария, а весь остальной код у вас закомментирован. »
Не, всё норм, это автосохранение при потере фокуса, если посмотрите, то жёлтая полосочка на вкладке - это не сохранено, когда щёлкнул по панели задач, то он исчезла - это автосохранение.
Работа сценария Мною проверяется, прежде чем код публикуется на форуме. »
Я ж ничего не говорю, я к тому, что "магия" какая-то. Даже не знаю, что может быть не так.
Кстати и оно логично, что не находит, потому что команда bcdedit /enum выводит только данные о текущей ОС, а с firmware все записи. добавил соответствующий параметр и уже находит и Arch, и ubuntu и т.д., и даже UEFI OS нашло по одному только description.
Кстати и оно логично, что не находит, потому что команда bcdedit /enum выводит только данные о текущей ОС, а с firmware все записи. »
Понятно.
Не придавал этому значения, т.к. располагаю наипростейшими загрузочными записями;
и даже UEFI OS нашло по одному только description. »
Ну, теперь выполняйте с параметрами из этого видео (http://forum.oszone.net/post-3032040-46.html).
Mancoffee
25-10-2024, 20:42
Ну, теперь выполняйте с параметрами из этого видео (http://forum.oszone.net/post-3032040-46.html).
Ну проверил парочку, вроде чётко всё, за что большое спасибо :)
Ну проверил парочку, вроде чётко всё »
Вот и разобрались, на 6-ой странице темы :search:
DJ Mogarych
26-10-2024, 06:38
Чисто для коллекции вариант на Powershell
$bcdedit = (gc C:\temp\bcdedit.txt -raw -Encoding oem) `
-replace '^Приложение[\s\S]*?-{3,}|Приложение.*' -split '-{3,}' -replace '\s{5,}(?=\S)','=' -replace '\\','\\' |% {
New-Object PSOBject -Property (ConvertFrom-StringData $_) |select идентификатор,device,path,description
}
$bcdedit
идентификатор device path description
------------- ------ ---- -----------
{08466ee1-90f9-11ef-a538-806e6f6e6963} partition=\Device\HarddiskVolume13 \EFI\UBUNTU\SHIMX64.EFI ubuntu
{58ec2b43-90b8-11ef-a537-806e6f6e6963} partition=H: \EFI\BOOT\BOOTX64.EFI UEFI OS
{58ec2b44-90b8-11ef-a537-806e6f6e6963} partition=I: \EFI\BOOT\BOOTX64.EFI UEFI OS
($bcdedit |? description -eq ubuntu).идентификатор
{08466ee1-90f9-11ef-a538-806e6f6e6963}
SQLai Lama
27-10-2024, 10:58
((sls 'description\s+ubuntu' C:\temp\bcdedit.txt -co 3,0).Context.PreContext | sls '{[0-9a-f-]+}').Matches.Value
Mancoffee
12-01-2025, 12:45
од:
((sls 'description\s+ubuntu' C:\temp\bcdedit.txt -co 3,0).Context.PreContext | sls '{[0-9a-f-]+}').Matches.Value »
Это что куда?
Чисто для коллекции вариант на Powershell »
Не понял, как это работает, выполнил код, выполняю переменную, пусто.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.