/ / Перетворити пакетний (BAT) сценарій у виконуваний (EXE) файл

Перетворіть пакетний (BAT) скрипт у виконуваний (EXE) файл

Коли ви переходите до нього, пакетні файли тавиконувані файли працюють майже так само. Обидва - це просто набір інструкцій та логіки для виконання Windows. То чому б ви хотіли перетворити пакетний файл у виконуваний файл, якщо вони по суті працюють однаково? Ось кілька причин:

  • Переносимість - ви можете включити у свій файл EXE додаткові інструменти, від яких залежить пакетний файл.
  • Захист - EXE забезпечує захист вихідного скрипту, щоб переконатися, що він ненавмисно не змінений.
  • Зручність - виконувані файли можна прикріпити до меню "Пуск" Windows та / або панелі завдань Windows 7.

За допомогою наведеного нижче сценарію ви можете легко створити власний виконуваний файл із пакетного файлу, доповненого вбудованими інструментами та необхідними ними.

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

Цей сценарій використовує 7-Zip розширенийSFX (SelF eXtractor) для поєднання та виконання пакетного файлу з будь-якими включеними інструментами. Тож вам потрібно буде завантажити (посилання, надані в кінці), і витягнути їх до однієї директорії.

Після того, як ви все завантажили, встановіть змінну "PathTo7Zip" у скрипті на місце, де ці файли завантажені.

Сценарій

@ECHO OFF
ECHO Make EXE From BAT
ECHO Written by: Jason Faulkner
ECHO SysadminGeek.com
ECHO.
ECHO.
REM Usage:
REM MakeExeFromBat BatFileToConvert [IncludeFile1] [IncludeFile2] [...]
REM
REM Required Parameters:
REM  BatFileToConvert
REM      Source batch file to use to produce the output Exe file.
REM
REM Optional Parameters:
REM  IncludeFile
REM      Additional files to include in the Exe file.
REM      You can include external tools used by the batch file so they are available on the executing machine.
SETLOCAL
REM Configuration (no quotes needed):
SET PathTo7Zip=
REM ---- Do not modify anything below this line ----
SET OutputFile="%~n1.exe"
SET SourceFiles="%TEMP%MakeEXE_files.txt"
SET Config="%TEMP%MakeEXE_config.txt"
SET Source7ZFile="%Temp%MakeEXE.7z"
REM Remove existing files
IF EXIST %OutputFile% DEL %OutputFile%
REM Build source archive
ECHO "%~dpnx1" > %SourceFiles%
:AddInclude
IF {%2}=={} GOTO EndInclude
ECHO "%~dpnx2" >> %SourceFiles%
SHIFT /2
GOTO AddInclude
:EndInclude
"%PathTo7Zip%7za.exe" a %Source7ZFile% @%SourceFiles%
REM Build config file
ECHO ;!@Install@!utf-8! > %Config%
ECHO RunProgram="%~nx1" >> %Config%
ECHO ;!@InstallEnd@! >> %Config%
REM Build EXE
COPY /B "%PathTo7Zip%7zsd.sfx" + %Config% + %Source7ZFile% %OutputFile%
REM Clean up
IF EXIST %SourceFiles% DEL %SourceFiles%
IF EXIST %Config% DEL %Config%
IF EXIST %Source7ZFile% DEL %Source7ZFile%
ENDLOCAL

Висновок

Важливо відзначити, що поки отриманефайл працює точно так само, як вихідний BAT-файл, це не справжня партія виконуваного перетворення. Отриманий файл є EXE, однак він призначений для використання для самостійного вилучення інсталяторів. При виконанні отриманого файлу EXE процес відбувається приблизно так:

  1. Вміст файлу EXE витягується в каталог temp.
  2. Конфігураційний файл, створений сценарієм, читається.
  3. Пакетний файл, що міститься у файлі EXE, виконується у новому вікні команд.
  4. Після закінчення тимчасові файли видаляються.

У Windows Vista та нових ОС ви можете побачитинаступне поле повідомлення після запуску сценарію. Після вибору "Ця програма встановлена ​​правильно", поле повідомлень не буде відображатися в майбутньому для цього файлу.

зображення

Оскільки файл EXE запускається у новому вікні,типовий спосіб реєстрації результатів (використовуючи знак '>') не буде працювати, як очікувалося. Для того, щоб увімкнути вихідний сигнал, вам потрібно буде це вручну обробити у вихідному сценарії.

Незважаючи на ці незначні незручності, можливість перетворити пакетний файл у виконуваний файл дійсно може стати в нагоді.

Посилання

Завантажте Make EXE з сценарію BAT від Sysadmin Geek

Завантажте інструмент командного рядка 7-Zip

Завантажте 7-Zip Advanced 7zSD SFX