Преобразование пакетного (BAT) сценария в исполняемый файл (EXE)
Когда вы приступаете к этому, пакетные файлы и исполняемые файлы работают практически одинаково. Оба - просто набор инструкций и логики для выполнения Windows. Так зачем вам конвертировать командный файл в исполняемый файл, если они по сути работают одинаково? Вот несколько причин:
- Переносимость - вы можете включить в свой EXE-файл дополнительные инструменты, от которых зависит пакетный файл.
- Защита - EXE-файл обеспечивает защиту вашего исходного скрипта, чтобы гарантировать, что он не был случайно изменен.
- Удобство - исполняемые файлы могут быть прикреплены к меню «Пуск» Windows и / или панели задач Windows 7.
С помощью приведенного ниже сценария вы можете легко создать свой собственный исполняемый файл из командного файла, в комплекте с необходимыми встроенными инструментами и необходимыми.
конфигурация
Этот скрипт использует расширенный SFX 7-Zip (SelF eXtractor) для связывания и выполнения командного файла с помощью любых включенных инструментов. Таким образом, вам нужно будет скачать (ссылки в конце) и извлечь их в один каталог.
После того, как вы загрузили все, установите переменную PathTo7Zip в скрипте в место, где эти файлы были загружены.
Сценарий
@ECHO OFF ECHO Сделать EXE из BAT ECHO Автор сценария: Джейсон Фолкнер ECHO SysadminGeek.com ECHO. ECHO. Использование REM: REM MakeExeFromBat BatFileToConvert [IncludeFile1] [IncludeFile2] […] REM REM Обязательные параметры: REM BatFileToConvert REM Исходный пакетный файл, используемый для создания выходного файла Exe. REM REM Необязательные параметры: REM IncludeFile REM Дополнительные файлы для включения в файл Exe. REM Вы можете включить внешние инструменты, используемые пакетным файлом, чтобы они были доступны на исполняющем компьютере. Конфигурация SETLOCAL REM (без кавычек): SET PathTo7Zip = REM ---- Не изменяйте ничего ниже этой строки ---- SET OutputFile = "% ~ n1.exe" SET SourceFiles = "% TEMP% MakeEXE_files.txt" SET Config = "% TEMP% MakeEXE_config.txt" SET Source7ZFile = "% Temp% MakeEXE.7z" REM Удалить существующие файлы IF EXIST% OutputFile% DEL% OutputFile% REM Создать исходный архив ECHO "% ~ dpnx1">% SourceFiles%: AddInclude IF % 2 == GOTO EndInclude ECHO "% ~ dpnx2" >>% SourceFiles% SHIFT / 2 GOTO AddInclude: EndInclude "% PathTo7Zip% 7za.exe" a% Source7ZFile% @% SourceFiles% REM Создать файл конфигурации ECHO ;! @ Install @ UTF-8! >% Config% ECHO RunProgram = "% ~ nx1" >>% Config% ECHO;! @ InstallEnd @! >>% Config% REM Build EXE COPY / B "% PathTo7Zip% 7zsd.sfx" +% Config% +% Source7ZFile%% OutputFile% REM Очистить IF EXIST% SourceFiles% DEL% SourceFiles% IF EXIST% Config% DEL% Config % IF EXIST% Source7ZFile% DEL% Source7ZFile% ENDLOCAL
Заключение
Важно отметить, что, хотя результирующий файл работает точно так же, как и исходный BAT-файл, это не является истинным преобразованием пакета в исполняемый файл. Полученный файл является EXE-файлом, однако он предназначен для самораспаковывающихся установщиков. Когда вы выполняете полученный EXE-файл, процесс происходит примерно так:
- Содержимое EXE-файла извлекается во временный каталог.
- Файл конфигурации, сгенерированный скриптом, читается.
- Пакетный файл, содержащийся в EXE-файле, выполняется в новом командном окне..
- После завершения временные файлы удаляются.
В Windows Vista и новых ОС после запуска сценария может появиться следующее окно сообщения. После выбора «Эта программа установлена правильно», окно сообщения не будет отображаться в будущем для этого файла.
Поскольку EXE-файл запускается в новом окне, типичный способ записи выходных данных (с использованием символа «>») не будет работать должным образом. Для того, чтобы зарегистрировать вывод, вам нужно обработать это в исходном скрипте.
Несмотря на эти незначительные неудобства, возможность преобразования пакетного файла в исполняемый файл действительно может пригодиться.
связи
Скачать Make EXE from BAT Script от Sysadmin Geek
Загрузить 7-Zip инструмент командной строки
Скачать 7-Zip Advanced 7zSD SFX