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

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

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

Аватара для Mancoffee

Старожил


Сообщения: 402
Благодарности: 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

 

Аватара для NickM

Ветеран


Contributor


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

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


Можете на пальцах показать, что нужно взять и куда нужно вставить?

Отправлено: 13:28, 23-10-2024 | #2



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

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


Аватара для Mancoffee

Старожил


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

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


Цитата NickM:
Можете на пальцах показать, что нужно взять и куда нужно вставить? »
Взять нужно это
Код: Выделить весь код
{08466ee1-90f9-11ef-a538-806e6f6e6963}
(как пример) и вставить в
Код: Выделить весь код
bcdedit /set {fwbootmgr} bootsequence ВставитьСюда
Но естественно, мне нужно сначала найти название ОС, которое имеет название ubuntu.

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


Аватара для NickM

Ветеран


Contributor


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

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


Типа такого?

Просто перебираем строки, где присваиваем идентификатор и ищем слово ubuntu во втором параметре:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion
For /F "Tokens=1,2* Delims= " %%a In ('bcdedit') Do (
if %%a EQU идентификатор set "ID=%%b"
if %%b EQU ubuntu (
echo."bcdedit /set {fwbootmgr} bootsequence !ID!"
pause
exit /b
)
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:03, 24-10-2024 | #4


Аватара для Mancoffee

Старожил


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

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


Цитата NickM:
Просто перебираем строки, где присваиваем идентификатор и ищем слово ubuntu во втором параметре: »
Попробовал
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion
For /F "Tokens=1,2* Delims= " %%a In ('bcdedit') Do (
	if %%a EQU идентификатор set "ID=%%b"
	if %%b EQU ubuntu (
		echo."bcdedit /set {fwbootmgr} bootsequence !ID! && shutdown -r -f -t 0"
		pause
		exit /b
	)
)
Чёт не хочет и команда по ходу даже не срабатывает, потому что рестарт не происходит.

Отправлено: 09:38, 24-10-2024 | #5


Аватара для NickM

Ветеран


Contributor


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

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


Выполнение bcdedit требует повышенных прав.

В таком сценарии перезагрузки не будет, т.к. echo - это вывод на экран.

Отправлено: 09:41, 24-10-2024 | #6


Аватара для Mancoffee

Старожил


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

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


Цитата NickM:
Выполнение bcdedit требует повышенных прав. »
У меня отключен UAC.
Плюс из cmd выполняется такая строка
Код: Выделить весь код
bcdedit /set {fwbootmgr} bootsequence {f749bee3-7ada-11ef-a4ee-806e6f6e6963} & shutdown -r -f -t 0
Попробовал перетаскиванием в cmd bat-файл, тоже ничего.

Цитата NickM:
В таком сценарии перезагрузки не будет, т.к. echo - это вывод на экран. »
Сделал так
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion
For /F "Tokens=1,2* Delims= " %%a In ('bcdedit') Do (
	if %%a EQU идентификатор set "ID=%%b"
	if %%b EQU Arch (
		echo."bcdedit /set {fwbootmgr} bootsequence !ID!"
		pause
		exit /b
	)
)
shutdown /r /f /t 0
Рестартанулось, но Arch не загрузило. Загрузило по умолчанию Win10

Отправлено: 09:45, 24-10-2024 | #7


Аватара для NickM

Ветеран


Contributor


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

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


Цитата Mancoffee:
Рестартанулось, но Arch не загрузило. Загрузило по умолчанию Win10 »
Цитата NickM:
В таком сценарии перезагрузки не будет, т.к. echo - это вывод на экран. »
Цитата Mancoffee:
echo."bcdedit /set {fwbootmgr} bootsequence !ID!" »
В таком сценарии команда bcdedit не выполнится, а лишь строка отобразится на экране (используйте echo при тестировании сценария, что бы видеть и понимать, какая команда в итоге будет выполнена);

Пробуйте так:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion
For /F "Tokens=1,2* Delims= " %%a In ('bcdedit') Do (
	if %%a EQU идентификатор set "ID=%%b"
	if %%b EQU Arch (
		bcdedit /set {fwbootmgr} bootsequence !ID!
                shutdown /r /f /t 0
	)
)
Цитата Mancoffee:
У меня отключен UAC. »
Не рекомендуемый сценарий.

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


Аватара для Mancoffee

Старожил


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

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


Цитата NickM:
В таком сценарии команда bcdedit не выполнится, а лишь строка отобразится на экране (используйте echo при тестировании сценария, что бы видеть и понимать, какая команда в итоге будет выполнена); »
Туплю
Цитата NickM:
Не рекомендуемый сценарий. »
Таааа, такое, уже лет так 15 юзаю без UAC, проблем нет

До этого было всё и UAC и антивирус и чего ещё только не было и переустанавливался бывало по 5-6 раз на день

Попробовал вот так
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion
For /F "Tokens=1,2* Delims= " %%a In ('bcdedit') Do (
	if %%a EQU идентификатор set "ID=%%b"
	if %%b EQU Arch (
		bcdedit /set {fwbootmgr} bootsequence !ID!
		pause
		exit /b
	)
)
shutdown /r /f /t 0
Тоже предыдущий результат.
Попробовал с echo - пустой вывод. Так понимаю, что echo off мешает, убрал, белеберда какая-то получилась.

Цитата NickM:
В таком сценарии команда bcdedit не выполнится »
Цитата Mancoffee:
белеберда какая-то получилась. »
Понял, нужно искать в
Код: Выделить весь код
bcdedit /enum firmare
, а вставлять уже в нужную команду
Куда нужно вставить команды?

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


Аватара для NickM

Ветеран


Contributor


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

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


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

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



Компьютерный форум 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




 
Переход