Прежде чем мы приступим к созданию пакетных файлов для установки любимых приложений и изменений в реестре, вы, вероятно, захотите узнать, что же это за файлы и как ими пользоваться.
Пакетные файлы (*.cmd или *.bat) могут быть выполнены на различных стадиях установки Windows. Использование пакетных файлов помогает автоматизировать выполнение нескольких заданий. При этом никакого вмешательства пользователя не требуется.
Эти файлы могут быть выполнены из cmdlines.txt, svcpack.inf, RunOnceEx раздела в реестре, или из секции [GuiRunOnce] в файле winnt.sif. Мы подробнее разберем различные варианты чуть позже.
Типичное содержимое пакетного файла
Пакетные файлы поддерживают все команды, которые могут быть выполнены из командной строки. Чтобы увидеть командую строку достаточно проделать следующее: Пуск->Выполнить->cmd->ОК
Давайте попробуем сделать простенький пакетный файл. Откройте Блокнот и скопируйте туда следующий текст:
title Batch File Testing
echo Hello World
echo.
echo Starting Notepad
start notepad
echo.
echo Starting Wordpad
start Wordpad
echo.
pause
exit
Сохраните файл с любым именем и в любом месте. Убедитесь, что вы назначили расширение *.cmd (а не .txt, которое Блокнот присвоит по умолчанию). Теперь запустите ваш файл. Вы увидите, что он назначит окну имя "Batch File Testing", запустит Блокнот и WordPad, попросит нажать любую клавишу для продолжения работы и закроет окно.
Что означают команды, использованные в данном файле?
@echo off | Скрывает строку C:\> и все команды, используемые в пакетном файле |
echo. | Создает пробел между строками |
echo message | Отображает сообщение в окне, исключительно с информационными целями |
title | Название окна |
start | Запускает приложение или установочный процесс |
pause | Отображает сообщение "Press any key to continue..." ("Нажмите любую клавишу для продолжения...") |
exit | Закрывает командную строку |
Когда вы начнете добавлять приложения для автоматической установки с инсталляционного диска XP, вы увидите, что в большинстве случаев команды будет выглядеть примерно так:
start /wait %systemdrive%\install\some_application\setup.exe /ключ /еще ключ
start запустит установку приложения, а /wait дождется ее окончания перед тем, как выполнить установку следующего приложения. Использование /wait очень важно, т.к. в противном случае одновременно запустится установка сразу нескольких приложений и конфликты неизбежны.
Вы всегда можете обратиться к странице Примеров, где можно увидеть различные примеры применения пакетных файлов.
Изменение цветовой гаммы
Во время установки окно, с выполняющимися командами, будет выглядеть так. Несколько мрачновато, но это можно разнообразить, сделав фон и шрифт цветными при помощи команды color хх. Атрибуты цветов задаются в виде двух шестнадцатеричных цифр - первая задает цвет фона, а вторая определяет цвет текста. Каждая цифра может иметь следующие значения:
0 = Черный | 8 = Серый |
1 = Синий | 9 = Светло-синий |
2 = Зеленый | A = Светло-зеленый |
3 = Голубой | B = Светло-голубой |
4 = Красный | C = Светло-красный |
5 = Лиловый | D = Светло-лиловый |
6 = Желтый | E = Светло-желтый |
7 = Белый | F = Ярко-белый |
Таким образом, для ярко-белого шрифта и голубого фона вы используете color 9F.
Чтобы посмотреть, как это выглядит на практике, скопируйте текст в блокнот и сохраните файл как colors.cmd.
cls
@echo off
Title Graphics group is being installed now
color 9F
ECHO Adobe Photoshop 7.0
ECHO ACDSee 6.0.3
PAUSE
Title Internet group is being installed now
color 57
ECHO Stay Connected! 3.5
ECHO MSN Messenger 6.2
PAUSE
EXIT
Примечание: команда PAUSE дана исключительно для того, чтобы можно было рассмотреть все получше. В реальном файле установка пойдет без остановки. В данном примере подается идея группировки приложений по типу (Графика, Интернет) и назначения им различных цветовых групп. Чтобы очистить экран перед каждой группой можно вставлять @CLS перед строкой Title.
cmdlines.txt, svcpack.inf и [GuiRunOnce]
Пакетные файлы могут быть запущены из cmdlines.txt или svcpack.inf, которые будут исполнены на Т-13/Т-12 этапе установки Windows (Т-13 означает 13 минут до окончания установки).cmdlines.txt удобен для таких задач как Добавление Пользователей, или для импортирования заранее подготовленных ключей реестра HKEY_CURRENT_USER в профиль по умолчанию (Default Profile). Подробнее о cmdlines.txt можно почитать в соответствующей статье в разделе Справочник.
Метод svcpack.inf, как правило, используется для установки обновлений (хотфиксов). Однако ничто не мешает рассматривать пакетный файл как еще один хотфикс.
Пример пакетного файла, запущенного из [GuiRunOnce] (скриншот).
Как вы видите, здесь используется комбинация ECHO и ECHO Message. Делать это не обязательно, но рекомендуется, т.к. дает возможность видеть, как происходит процесс инсталляции приложений в реальном времени. [GuiRunOnce] запускается при первом входе в систему.
Пример содержимого пакетного файла:
@echo off
TITLE Windows XP SP2 - Unattended Installation
ECHO.
ECHO Over the next few minutes you will see automated installations
ECHO of various sofware applications, and registry tweaks being
ECHO implemented.
ECHO.
ECHO Removing Wallpapers and Screensavers...
DEL "%systemroot%\*.bmp"
DEL "%systemroot%\Web\Wallpaper\*.jpg"
DEL "%systemroot%\system32\dllcache\*.scr"
DEL "%systemroot%\system32\*.scr"
ECHO.
ECHO Removing useless shortcuts...
DEL "%systemdrive%\Documents and Settings\All Users\Start Menu\Windows
Update.lnk"
DEL "%systemdrive%\Documents and Settings\All Users\Start Menu\Set
Program Access and Defaults.lnk"
DEL "%systemdrive%\Documents and Settings\All Users\Start Menu\Windows
Catalog.lnk"
ECHO.
ECHO Installing TweakUI 2.10 Powertoy
ECHO Please wait...
start /wait %systemdrive%\Install\TweakUI.msi /qn
ECHO.
ECHO Applying Registry Tweaks...
REGEDIT /S %systemdrive%\Install\RegTweaks.reg
ECHO.
ECHO Deleting ASP.NET User Account created by .NET Framework 1.1...
net user aspnet /delete
ECHO.
EXIT
Он производит удаление обоев и скринсэйверов, устанавливаемых по умолчанию системой, а также некоторых ярлыков. Затем устанавливает TweakUI, импортирует ключи реестра и удаляет учетную запись ASP.NET, созданную при установке .NET Framework. Более содержательный файл вы можете посмотреть на странице примеров.
Куда положить пакетные файлы?
- O [GuiRunOnce] рассказывает отдельная небольшая статья в разделе Справочник.
- cmdlines.txt нужно положить в корень папки $OEM$, и Windows автоматически найдет его во время установки. Чтобы не указывать путь к пакетным файлам, запускаемым из cmdlines.txt, они должны находиться в той же папке, что и cmdlines.txt.
- svcpack.inf кладется в директорию I386 на вашем инсталляционном диске (не забудьте удалить svcpack.in_ оттуда). Все пакетные файлы, запускаемые изsvcpack.inf, должны находиться в директории I386\svcpack, если только это не прописано иначе в самом файле.