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

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista » Общее - BAT/CMD скрипт-меню для dism.exe

Ответить
Настройки темы
Общее - BAT/CMD скрипт-меню для dism.exe

Аватара для sosed213

Пользователь


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


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

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


Изменения
Автор: sosed213
Дата: 25-12-2017
Описание: Обновление скрипта
Изображения
Тип файла: png 2017-12-18_144636.png
(9.3 Kb, 59 просмотров)
Тип файла: png 2017-12-18_144646.png
(13.3 Kb, 50 просмотров)
Вложения
Тип файла: zip dism-menu.zip
(3.4 Kb, 89 просмотров)
На днях обновлял свои образы c windows 7, и для облегчения работы накидал небольшой скрипт-меню для утилиты dism.

Скрипт выполнен в виде меню.
Реализованы базовые возможности dism для работы с offline образами.

Основные возможности:
  • получить информацию о wim-файле.
  • Монтировать образ.
  • Применить образ.
  • Экспортировать образ.
  • Захват/Добавления образа.
  • Интегрирование пакетов обновлений.
  • Интегрирование драйверов.

В скрипте используются переменные, которые можно изменить вручную в файле (файл сохранен в кодировке 866 OEM) , или при запуске скрипта, в меню.

Есть пункт меню Сценарии, но его я не прорабатывал. Идея сценариев - автоматизировать весь процесс.
Возможны ошибки и неточности.
Скрипт можно доделать, переделать под себя.

25.12.2017 Обновил скрипт. Условно v1.1. Исправлены ошибки. Переработано меню. Работа продолжается.

-------
Перед тем как задавать вопросы, медленно посчитайте про себя до десяти!!!

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:49, 18-12-2017

 

Аватара для Ж.Д.А.Л.К.Е.Р.

Ветеран


Contributor


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

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


Небольшая подсказка, лучше вместо
Код: Выделить весь код
set choice=
Set /p choice="Ваш выбор: "
if not defined choice goto menu0
if "%choice%"=="1" (goto menu1)
if "%choice%"=="2" (goto menu2)
if "%choice%"=="3" (goto menu3)
if "%choice%"=="4" (goto menu4)
if "%choice%"=="9" (goto menu9)
if "%choice%"=="0" (goto ExitAll)
Echo.
Echo Не правильно сделан выбор задания
Echo.
Echo.
goto menu0
pause >nul
написать
Код: Выделить весь код
Choice /c 123490 /n /m "Ваш выбор: "
GoTo menu%ErrorLevel%
и перед :ExitAll добавить строку :menu0. Тогда невозможно будет нажать клавишу кроме заданных , просто не сработает, конструкция проще и меньше строчек кода. И так заменить все остальные Set /p.

Последний раз редактировалось Ж.Д.А.Л.К.Е.Р., 18-12-2017 в 12:46.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:41, 18-12-2017 | #2



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

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


Аватара для sosed213

Пользователь


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

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


Ж.Д.А.Л.К.Е.Р., предложение по оптимизации хорошее, но принцип работы у Choice узкоспециализированный.

Я делал меню чтобы понятнее(приятнее) было работать с меню. Т.е. например 0 - это выход. Но Choice вернет вместо нуля его индекс, т.е. 6. И логика построения меню станет запутанной.

Choice /c 123490 /n /m "Ваш выбор: "

Придется применять мою конструкцию с условием, и небольшой переделкой:
if "%ErrorLevel%"=="1" (goto menu1)
if "%ErrorLevel%"=="2" (goto menu2)
if "%ErrorLevel%"=="3" (goto menu3)
if "%ErrorLevel%"=="4" (goto menu4)
if "%ErrorLevel%"=="4" (goto menu9)
if "%ErrorLevel%"=="5" (goto ExitAll)

-------
Перед тем как задавать вопросы, медленно посчитайте про себя до десяти!!!


Отправлено: 10:01, 22-12-2017 | #3


Ветеран


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

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


Цитата sosed213:
И логика построения меню станет запутанной. »
Логика будет ровно той, что описана в документации. Вашу конструкцию с кучей if применять не требуется.

Отправлено: 12:39, 22-12-2017 | #4


Аватара для sosed213

Пользователь


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

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


Обновил скрипт. Описание в шапке.

-------
Перед тем как задавать вопросы, медленно посчитайте про себя до десяти!!!


Отправлено: 10:55, 25-12-2017 | #5


Аватара для osmaster

Пользователь


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

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


Посмотрел скрипт. Есть вопросы-замечания:
1) Командами SET вначале жестко задаются пути источника, папки монтирования и т.д. Почему бы не использовать относительные пути - относительно места запуска скрипта?
2) К команде dism не нужно приписывать расширение .exe. Запускать лучше с ключом /LogLevel:1, чтобы не перегружать log-файл излишней информацией, регистрируя лишь сообщения об ошибках.
3) В скрипте работа ведётся только с автономным файлом образа (обычно install.wim). Но установленная ОС это тоже образ, только "развёрнутый" и система DISM умеет выполнять обслуживание онлайн. В данном скрипте это не реализовано.
4) В меню скрипта нет пунктов позволяющих посмотреть (получить) сведения о содержимом образа. Я имею ввиду списки уже интегрированных в образ драйверов и обновлений, состояния (вкл/выкл) компонентов ОС.
5) Что если попытаться интегрировать обновление которое уже имеется в образе? Проверка наличия в скрипте не выполняется. Система DISM потом "поймёт" (когда всё распакует и приготовится интегрировать), но время буде потеряно напрасно.

Имею свою коллекцию скриптов для работы с автономными образами и обслуживания онлайн. Частично "раскрываю карты" и выкладываю их на Habrahabr (ссылка на список моих постов). Может быть найдёшь там для себя полезную информацию.

Отправлено: 15:03, 29-01-2018 | #6


Аватара для sosed213

Пользователь


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

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


osmaster, с чем то соглашусь, но решений удовлетворяющих каждого не бывает.
1) Да, в некоторых случаях будет удобно работать с относительными путями, подумаю над этим.
2) Стараюсь всегда добавлять соответствующее расширение, как в данном случае ".exe", чтобы не было не понятных глюков. В некоторых системах, если не указать .exe, скрипт как бы циклически перезапускается. /LogLevel:1 да, будет полезен.
3 и 4) Скрипт делал под конкретную задачу, но его можно масштабировать до полноценного DISM-Menu.
5) Дополнительные проверки будут полезны.

Спасибо за ссылку на habrahabr, есть интересные скрипты.

-------
Перед тем как задавать вопросы, медленно посчитайте про себя до десяти!!!


Отправлено: 14:16, 02-02-2018 | #7



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista » Общее - BAT/CMD скрипт-меню для dism.exe

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Безопасность - Создание exe из cmd или bat с распаковкой в озу Abudabi Программное обеспечение Windows 4 06-05-2016 21:21
CMD/BAT - [решено] Запуск .exe файла с помощью CMD/BAT | meGangstaWorld Скриптовые языки администрирования Windows 1 23-09-2014 18:37
2007 - [решено] Настройка почты через bat (cmd или скрипт) zai Microsoft Office (Word, Excel, Outlook и т.д.) 1 25-11-2011 17:32
CMD/BAT - [решено] Скрипт для cmd запуск и выключение explorer.exe в определенное время... ar3127 Скриптовые языки администрирования Windows 7 18-06-2011 22:03
CMD/BAT - [решено] Работа с 7z.exe в bat\cmd файле Medic84 Скриптовые языки администрирования Windows 5 13-10-2009 15:35




 
Переход