|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как найти строку в блоке вывода bat, но вставить другую? |
|
|
CMD/BAT - [решено] Как найти строку в блоке вывода bat, но вставить другую?
|
|
Старожил Сообщения: 431 |
Есть вывод команды 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 |
|
Ветеран Сообщения: 4631
|
Профиль | Отправить PM | Цитировать Понятно, что изначально хотелось выбирать идентификатор по описанию, но, какой смысл в этой всей чехарде, когда проще прописать идентификаторы напрямую и менять конфигурацию?
|
|
Отправлено: 17:26, 24-10-2024 | #31 |
|
Старожил Сообщения: 431
|
Профиль | Отправить PM | Цитировать Цитата NickM:
Ладно, хрен с ним. Спасибо, что старались помочь. ПС. Спойлер не открывается. Ничего не показывает. Цитата NickM:
|
||
|
Отправлено: 23:50, 24-10-2024 | #32 |
|
Ветеран Сообщения: 4631
|
Профиль | Отправить PM | Цитировать Цитата Mancoffee:
Цитата Mancoffee:
Но, в любом случае, его нужно/ нужно будет чуть-чуть переделать и обрабатывать параметры в другом порядке, сначала decription, после device, и сделать второй параметр не обязательным. |
||
|
Отправлено: 06:33, 25-10-2024 | #33 |
|
Ветеран Сообщения: 4631
|
Профиль | Отправить PM | Цитировать Цитата NickM:
@echo off
setlocal enableextensions enabledelayedexpansion
set "p1=%1"
set "p2=%2"
For /F "Tokens=1* Delims= " %%a In ('type "%~dp0bcdedit.out"') Do (
if %%a EQU идентификатор set "ID=%%b"
if %%a EQU device set "DEV=%%b"
if %%a EQU path set "PATH=%%b"
if %%a EQU description (
set "DESCR=%%b"
if not defined p2 call :onepar %p1% else
if "!DESCR!":"!DEV!" EQU %1:%2 (
echo."Изменяем загрузочную запись с описанием %p1% и устройством %p2%"
echo."bcdedit /set {fwbootmgr} bootsequence !ID!"
)
set "ID="
set "DEV="
set "PATH="
set "DESCR="
)
)
goto :EOF
:onepar
if "!DESCR!" EQU %1 (
echo."Изменяем загрузочную запись с описанием %1"
echo."bcdedit /set {fwbootmgr} bootsequence !ID!"
)
Скрытый текст
|
|
|
Отправлено: 07:37, 25-10-2024 | #34 |
|
Старожил Сообщения: 431
|
Профиль | Отправить PM | Цитировать Цитата NickM:
Цитата NickM:
ПС. Про кодировку помню. |
||
|
Последний раз редактировалось Mancoffee, 25-10-2024 в 09:13. Отправлено: 09:06, 25-10-2024 | #35 |
|
Ветеран Сообщения: 4631
|
Профиль | Отправить PM | Цитировать Цитата Mancoffee:
Вот, сценарий обрабатывающий вывод команды: @echo off
setlocal enableextensions enabledelayedexpansion
set "p1=%1"
set "p2=%2"
For /F "Tokens=1* Delims= " %%a In ('bcdedit /enum') Do (
if %%a EQU идентификатор set "ID=%%b"
if %%a EQU device set "DEV=%%b"
if %%a EQU path set "PATH=%%b"
if %%a EQU description (
set "DESCR=%%b"
if not defined p2 call :onepar %p1% else
if "!DESCR!":"!DEV!" EQU %1:%2 (
echo."Изменяем загрузочную запись с описанием %p1% и устройством %p2%"
echo."bcdedit /set {fwbootmgr} bootsequence !ID!"
)
set "ID="
set "DEV="
set "PATH="
set "DESCR="
)
)
goto :EOF
:onepar
if "!DESCR!" EQU %1 (
echo."Изменяем загрузочную запись с описанием %1"
echo."bcdedit /set {fwbootmgr} bootsequence !ID!"
)
Скрытый текст
|
|
|
Отправлено: 10:52, 25-10-2024 | #36 |
|
Старожил Сообщения: 431
|
Профиль | Отправить PM | Цитировать Цитата NickM:
![]() С кавычками заработало. То бишь кавычки я так понимаю в любом случае нужны, даже если нет пробелов/спец. символов. Но заработало тоже не до конца. |
|
|
Отправлено: 11:30, 25-10-2024 | #37 |
|
Ветеран Сообщения: 4631
|
Профиль | Отправить PM | Цитировать Цитата Mancoffee:
Всё, должно работать. На вашем скрине запечатлён сценарий из предшествующего ответа: Цитата NickM:
Цитата NickM:
|
|||
|
Отправлено: 11:47, 25-10-2024 | #38 |
|
Старожил Сообщения: 431
|
Профиль | Отправить PM | Цитировать Цитата NickM:
Скрытый текст
@echo off
setlocal enableextensions enabledelayedexpansion
set "p1=%1"
set "p2=%2"
For /F "Tokens=1,2* Delims= " %%a In ('bcdedit /enum firmware') Do (
if %%a EQU идентификатор set "ID=%%b"
if %%a EQU device set "DEV=%%b"
if %%a EQU path set "PATH=%%b"
if %%a EQU description (
set "DESCR=%%b"
if not defined p2 call :onepar %p1% else
if "!DESCR!":"!DEV!" EQU %1:%2 (
echo."Изменяем загрузочную запись с описанием %p1% и устройством %p2%"
echo."bcdedit /set {fwbootmgr} bootsequence !ID!"
)
set "ID="
set "DEV="
set "PATH="
set "DESCR="
)
)
goto :EOF
:onepar
if "!DESCR!" EQU %1 (
echo."Изменяем загрузочную запись с описанием %1"
echo."bcdedit /set {fwbootmgr} bootsequence !ID!"
)
А в так сказать параметрах к bat файлу операторы сравнения работать будут, точнее должны? Например для поиска того же UEFI OS, если искать по второму параметру, то может быть как указана буква к диску, так и volume. |
|
|
Отправлено: 12:09, 25-10-2024 | #39 |
|
Ветеран Сообщения: 4631
|
Профиль | Отправить PM | Цитировать Цитата Mancoffee:
|
|
|
Отправлено: 12:31, 25-10-2024 | #40 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| Принтер - Каким образом можно вставить, лоток вывода бумаги С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 | |
|