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

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

Ответить
Настройки темы
CMD/BAT - [решено] Как найти строку в блоке вывода bat, но вставить другую?

Аватара для Mancoffee

Старожил


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


Конфигурация

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


Есть вывод команды bcdedit

Код: Выделить весь код
Приложение микропрограммы (101fffff)
-------------------------------
идентификатор           {08466ee1-90f9-11ef-a538-806e6f6e6963}
device                  partition=\Device\HarddiskVolume13
path                    \EFI\UBUNTU\SHIMX64.EFI
description             ubuntu

Приложение микропрограммы (101fffff)
-------------------------------
идентификатор           {58ec2b43-90b8-11ef-a537-806e6f6e6963}
device                  partition=H:
path                    \EFI\BOOT\BOOTX64.EFI
description             UEFI OS

Приложение микропрограммы (101fffff)
-------------------------------
идентификатор           {58ec2b44-90b8-11ef-a537-806e6f6e6963}
device                  partition=I:
path                    \EFI\BOOT\BOOTX64.EFI
description             UEFI OS
нужно найти идентификатор требуемой ОС и вставить её во вторую команду, но ИД находится перед названием ОС.
Как это сделать?

Отправлено: 08:29, 23-10-2024

 

Аватара для Mancoffee

Старожил


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

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


Цитата NickM:
Т.к. в сценарии используется кириллические символы, убедитесь, что файл сценария сохранён в кодировке cp866. »
Да, так работает. Спасибо.

Есть проблема с Easy2Boot, у него два раздела и оба отображаются как UEFI OS, пробовал менять названия, но насколько я понял, UEFI материнки начинает "тупить" и менять эти названия, сначала на своё какое-то, по итогу возвращает в UEFI OS, наверное исходя из того, что он видит на самом файле, который лежит в разделе.
Но эти два раздела всегда идут вместе и порядок не меняется. Можно ли их как-то обозначить в скрипте раздельно?
Код: Выделить весь код
0  : Windows 10                                                       Р?Р?С?Р?Р°
1  : rEFInd                                                           Р?Р?С?Р?Р°
2  : Windows 7                                                        Р?Р?С?Р?Р°
3  : Kubuntu                                                          Р?Р?С?Р?Р°
4  : UEFI Shell                                                       Р?Р?С?Р?Р°
5  : Arch                                                             Р?Р?С?Р?Р°
6  : Windows Boot Manager                                             Р?Р?С?Р?Р°
7  : ubuntu                                                           Р?Р?С?Р?Р°
8  : UEFI OS                                                          Р?Р?С?Р?Р°
9  : UEFI OS                                                          Р?Р?С?Р?Р°
10 : Hard Drive                                                       Р?Р?С?Р?Р°
11 : USB HDD                                                          Р?Р?С?Р?Р°
12 : Network Card                                                     Р?Р?С?Р?Р°
В принципе и с Windows тоже самое, он любые версии обозначает как Windows Boot Manager , это у меня уже вручную переименованные, но всё равно биос материнки либо меняет их, либо дублирует с оригинальным названием.

Последний раз редактировалось Mancoffee, 24-10-2024 в 11:12.


Отправлено: 11:01, 24-10-2024 | #11



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

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


Аватара для NickM

Ветеран


Contributor


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

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


Цитата Mancoffee:
Можно ли их как-то обозначить в скрипте раздельно? »
Покажите полный вывод этих проблемных записей.

Как вариант, найти тот параметр, который будет отличаться в этих записях.

Т.е. опираться не на description , а на что-то другое и/ или комбинацию параметров;

Цитата Mancoffee:
пробовал менять названия »
Каким образом меняли? Попробуйте способом копирования с помощью bcdedit.

Отправлено: 11:16, 24-10-2024 | #12


Аватара для Mancoffee

Старожил


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

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


Цитата NickM:
Т.е. опираться не на description , а на что-то другое и/ или комбинацию параметров; »
Ну да, в принципе по device самый лучший вариант.
Код: Выделить весь код
Приложение микропрограммы (101fffff)
-------------------------------
идентификатор           {58ec2b43-90b8-11ef-a537-806e6f6e6963}
device                  partition=\Device\HarddiskVolume18
path                    \EFI\BOOT\BOOTX64.EFI
description             UEFI OS

Приложение микропрограммы (101fffff)
-------------------------------
идентификатор           {58ec2b44-90b8-11ef-a537-806e6f6e6963}
device                  partition=\Device\HarddiskVolume19
path                    \EFI\BOOT\BOOTX64.EFI
description             UEFI OS
Цитата NickM:
Попробуйте способом копирования с помощью bcdedit. »
Копирования чего и куда?

Менял с помощью bcdedit
Код: Выделить весь код
bcdedit /set {408dc4d5-903f-11ef-a533-806e6f6e6963} description "Kubuntu from LEVEN"

Последний раз редактировалось Mancoffee, 24-10-2024 в 11:52.


Отправлено: 11:31, 24-10-2024 | #13


Аватара для NickM

Ветеран


Contributor


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

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


Цитата Mancoffee:
Копирования чего и куда? »
Например, не изменять description существующей записи, а выполнить копирование:
Код: Выделить весь код
bcdedit /copy /?
Цитата Mancoffee:
Ну да, в принципе по device самый лучший вариант. »
Сделали, добились желаемого?

Отправлено: 12:13, 24-10-2024 | #14


Аватара для Mancoffee

Старожил


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

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


Цитата NickM:
Например, не изменять description существующей записи, а выполнить копирование: »
Не, тоже самое, о чём я говорил. Поменяло на "UEFI: ACASIS, Partition 1", после первой перезагрузки, потом ещё раз или два рестарт и будет прежнее.
Цитата NickM:
Сделали, добились желаемого? »
Сделал так
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion
For /F "Tokens=1,2* Delims= " %%a In ('bcdedit') Do (
	if %%a EQU device set "ID=%%b"
	if %%b EQU partition=\Device\HarddiskVolume2 (
		echo."bcdedit /set {fwbootmgr} bootsequence !ID!"
		pause
		exit /b
	)
)
Не подхватывает строку. Редактор показывает, что неправильный синтаксис. Пробовал строку с partition в кавычки брать (и оставить только HardDisk...), не помогает. Наверное чёт экранировать нужно.

Последний раз редактировалось Mancoffee, 24-10-2024 в 12:42.


Отправлено: 12:29, 24-10-2024 | #15


Аватара для NickM

Ветеран


Contributor


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

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


Цитата Mancoffee:
Не подхватывает строку. Редактор показывает, что неправильный синтаксис. Пробовал строку с partition в кавычки брать (и оставить только HardDisk...), не помогает. Наверное чёт экранировать нужно. »
Можно всю строку device сравнивать, например:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

For /F "Tokens=1,2* Delims= " %%a In ('bcdedit') Do (
if %%a EQU идентификатор set "ID=%%b"

if "%%b" EQU "partition=\Device\HarddiskVolume2" (
echo."bcdedit /set {fwbootmgr} bootsequence !ID!"
)

if "%%b" EQU "partition=H:" (
echo."bcdedit /set {fwbootmgr} bootsequence !ID!"
)
)

pause

Отправлено: 13:07, 24-10-2024 | #16


Аватара для Mancoffee

Старожил


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

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


Цитата NickM:
Можно всю строку device сравнивать »
Ничего не выдаёт.

Там наверное ошиблись, не идентификатор, а device нужно прописывать?
Но пробовал и так, и так.

Отправлено: 13:13, 24-10-2024 | #17


Аватара для NickM

Ветеран


Contributor


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

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


Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

For /F "Tokens=1,2* Delims= " %%a In ('bcdedit') Do (
if %%a EQU идентификатор set "ID=%%b"

if "%%b" EQU "partition=\Device\HarddiskVolume13" (
echo."bcdedit /set {fwbootmgr} bootsequence !ID!"
pause
exit /b
)
)
Согласно Ваших исходных данных, выполнив этот сценарий, отобразится следующая строка, после нажатия клавиши окно командного интерпретатора закроется:
Цитата:
"bcdedit /set {fwbootmgr} bootsequence {08466ee1-90f9-11ef-a538-806e6f6e6963}"

Отправлено: 13:26, 24-10-2024 | #18


Аватара для Mancoffee

Старожил


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

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


Цитата NickM:
выполнив этот сценарий, отобразится следующая строка »
Не, ничего нет

И ожидания для нажатия клавиши тоже нет.

Отправлено: 14:18, 24-10-2024 | #19


Аватара для NickM

Ветеран


Contributor


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

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


Цитата NickM:
Т.к. в сценарии используется кириллические символы, убедитесь, что файл сценария сохранён в кодировке cp866. »
Скрытый текст

Отправлено: 14:31, 24-10-2024 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Принтер - Каким образом можно вставить, лоток вывода бумаги Сanon 2900 b1844133 Прочее железо 0 15-02-2020 11:16
CMD/BAT - [решено] заменить с помощью bat'ника одну строку на другую warkdimka Скриптовые языки администрирования Windows 2 18-02-2016 09:28
[решено] В системном блоке хлопок (звук) такой как будто петарда взорвалась. Но все работает, micro8 Непонятные проблемы с Железом 17 18-03-2011 23:01
банально но как (!ПРАВИЛЬНО!) сохранить флешку и вставить её Denis Shutka Вебмастеру 1 09-01-2005 23:37
Как прекодлировать строку из одной кодировки в другую Vlad Drakula Вебмастеру 11 05-07-2004 22:56




 
Переход