Домашня » як » Перетворення пакетного (BAT) сценарію на виконуваний файл (EXE)

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

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

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

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

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

    Цей скрипт використовує 7-Zip розширений SFX (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 Configuration (без котирувань): 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 Якщо % 2 ==  GOTO EndInclude ECHO "% ~ dpnx2" >>% SourceFiles% SHIFT / 2 GOTO AddInclude: EndInclude "% PathTo7Zip% 7za.exe"% Source7ZFile% @% SourceFiles% REM !! @ Встановіть @! 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-файл, цей процес відбувається приблизно так:

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

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

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

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

    Посилання

    Завантажити Зробити EXE з BAT Script від Sysadmin Geek

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

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