[Цитировать]

    bios83
  • 2205
  • Стаж: 8 лет 4 месяца
  • Сообщений: 105
  • Репутация:16

    [+] [-]
Одно время перебрал кучу команд , остановился на bcdedit /set {default} onetimeadvancedoptions yes
А после этих команд нужно править BCD
bcdedit /set {default} safeboot network или bcdedit /set {default} safeboot а не то будешь постоянно попадать после перезагрузки постоянно в безопасный режим

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 2 месяца
  • Сообщений: 3600
  • Репутация:127

    [+] [-]
bios83, вот примерный алгоритм, КМК:
bcdedit /copy {default} => {id}
bcdedit /set {id} safeboot network
bcdedit /bootsequence {id}
reg add HKLM\...\RunOnce  bcdedit /delete {id}

[Цитировать]

    UserX
  • 667
  • Стаж: 9 лет
  • Сообщений: 795
  • Репутация:32

    [+] [-]
83534вот примерный алгоритм, КМК:
А сколько стадий у этого алгоритма? Имеется ввиду, что делается перед первой перезагрузкой, а что - после неё.

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 2 месяца
  • Сообщений: 3600
  • Репутация:127

    [+] [-]
UserX, каких ещё стадий? Я схематично написал батник. Один батник.
Но я не работал с RunOnce и, возможно, для удаления временного пункта {id} потребуется другой способ.
Там, кстати, надо будет писать // *bcdedit ... // для работы в safe mode.
In addition, if you want the RunOnce command to run even in Safe Mode, you can prepend the key name value with an asterisk '*'.

[Цитировать]

    bios83
  • 2205
  • Стаж: 8 лет 4 месяца
  • Сообщений: 105
  • Репутация:16

    [+] [-]
Просто до этого была беда, постоянно SafeMode.exe антивирусники подъедали, пришлось перейти на консольный вариант
bcdedit /set {default} onetimeadvancedoptions yes

[Цитировать]

    dimo70
  • 17296
  • Стаж: 6 лет 4 месяца
  • Сообщений: 3990
  • Репутация:26

    [+] [-]
  • Откуда: BG
bios83, твой вариант пробовал, работает нормально. Разница только, что при первой перезагрузке показывает меню где нужно выбрать пункт для мода. При второй перезагрузке уже все нормально.

_________________
Подпись отключена за нарушение правил форума

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 2 месяца
  • Сообщений: 3600
  • Репутация:127

    [+] [-]
cartmenezz,
Использование ";" - это, типа, трюк. В моём случае, это совмещение в одном файле батника и управляющего файла для создания CAB-архива. Так же можно совмещать батник и REG-файл, например.
В чем смысл: батник игнорирует символ ";" в начале строки, а для управляющего файла (и REG-файла) строка с символом ";" в начале - это комментарий.
Символ экранирования вывода команды echo может быть разным. В своё время, nikzzzz даже мониторил системные процессы и утверждал, что echo. системой сначала рассматривается как имя файла, а уже затем как команда батника. Правда, от уточняющих вопросов уклонился :)))
Я использую / просто по привычке. Это не критично.
Но есть нюанс. Уже описывал где-то тут на форуме. При использовании EnableDelayedExpansion строка:
echo;!var!
работает всегда, а вот
echo/!var!
(или другие символы, кроме ;) глючит при определённых условиях (погугли батниковые ветки форума).


Последний раз редактировалось: Ander_73 (2021-03-02 14:23), всего редактировалось 1 раз

[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 8 лет 7 месяцев
  • Сообщений: 526
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
Ander_73, премного благодарен

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 2 месяца
  • Сообщений: 3600
  • Репутация:127

    [+] [-]
cartmenezz, есть стандартная конструкция языка:
<file set /p var=prompt
То есть первая строка из файла file присваивается переменной var с выводом запроса prompt.
Механизм таков: информация из file вводится в переменную var до:
  • появления символа перевода строки CR/LF
  • появления непечатного символа
  • появления конца файла
В двух последних случаях курсор не переводится на след. строку, а остаётся после prompt. В случае с потоком nul мы сразу получаем "конец файла" и поэтому переменная var остаётся пустой и курсор остаётся на строке prompt.
Эта конструкция просто используется для вывода на экран без перевода каретки. И последующий вывод будет идти сразу за последним символом строки prompt.
Например, для такого варианта:
<nul set /p "=Идёт распаковка архива...  "
>nul 7z x arch.7z
echo готово.

[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 8 лет 7 месяцев
  • Сообщений: 526
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
Ander_73, спасибо за разъяснение, хоть чуть-чуть понятнее стало))
83914Эта конструкция просто используется для вывода на экран без перевода каретки.
это вроде бы дошло
83914И последующий вывод будет идти сразу за последним символом строки prompt
а вот это - неособо))
но эффект я вроде понял - перевода каретки не происходит (создаём видимость что работа ещё не окончена) пока не окончится операция, прописанная после данной конструкции, и пока не будет вывода на экран результата этой операции. правильно?

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 2 месяца
  • Сообщений: 3600
  • Репутация:127

    [+] [-]
83916а вот это - неособо))
Если в команде
>nul 7z x arch.7z
убрать ">nul", то вывод 7z начнётся не с новой строки, как положено, а сразу после строки "Идёт распаковка архива... "
Так понятнее?

[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 8 лет 7 месяцев
  • Сообщений: 526
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
83917если убрать ">nul"
На этот момент не обратил внимания... Ещё несколько раз перечитал ту строку, теперь понял о чем там шла речь

[Цитировать]

    rezorustavi
  • 2337
  • Стаж: 8 лет 3 месяца
  • Сообщений: 928
  • Репутация:55

    [+] [-]
  • Откуда: Грузия, город Рустави
51945я подобным способом запускаю SDI во время установки ОС
Скинте пожалуйста этот трюк. Особенно если сможете, чтобы добавить в живую систему перед снятием образа Акронисом.
А еще лучше, если получится для DrvCeo, так как он меньше места занимает, в отличии от SDI
https://disk.yandex.ru/d/GpLNEocgJ9FpPA
Официальный сайт производителя:
https://www.sysceo.com/Software-softwarei-id-264.html
Почитав комментарии и советы от vanasha20, я там под этим ником, чтобы не нахвататься китайского дополнительного хлама ...

[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 8 лет 7 месяцев
  • Сообщений: 526
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
Всем привет aa
Задача:
1. Выполнение команды (при выполнении есть вывод в консоль)
2. В зависимости от результата нужно дополнительно вывести сообщение
На данный моммент реализовал примерно как-то так:
set var=0& команда| findstr "слово"&& set var=1
if "%var%"=="1" GoTo метка1
GoTo метка0
...
:метка0
сообщение
exit /b
:метка1
сообщение
exit /b
Проблема в том, что мне хотелось бы, чтобы вывод от выполнения команды полностью отображался в консоли, но при такой реализации отображается только найденная строка (если найдена)... Как-то можно иначе сделать? Поидее можно вывод команды отправлять в файл, из него читать в консоль, и в нем искать строку и выводить свое сообщение.. Но возможно есть другой способ?
И еще вопрос: возможно ли как-то прописать поиск строки и в случае неудачи поиск другой строки (а может и третьей, четвертой,..) и это так же для вывода команды, и так же без содания файла? (что-то типа: set var=0& команда| findstr "слово"&& set var=1|| findstr "слово2"&& set var=2 , но чтобы работало))

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 2 месяца
  • Сообщений: 3600
  • Репутация:127

    [+] [-]
cartmenezz, утилита одновременного вывода и в файл (в котором искать), и в консоль - TEE. Гуголь в помощь.
84536что-то типа: set var=0& команда| findstr "слово"&& set var=1|| findstr "слово2"&& set var=2 , но чтобы работало
Скобки расставь, да! ae

Страница 43 из 89


Показать сообщения:    

Текущее время: 16-Апр 15:11

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы