/ / Konvertovať dávkový (BAT) skript na spustiteľný (EXE) súbor

Konvertovať šaržový (BAT) skript na spustiteľný (EXE) súbor

Keď sa k tomu dostanete, dávkové súbory aspustiteľné súbory fungujú takmer rovnako. Obidva sú jednoducho súborom pokynov a logiky, ktorú môže systém Windows vykonať. Prečo by ste teda chceli skonvertovať dávkový súbor na spustiteľný súbor, ak v podstate fungujú rovnako? Tu je niekoľko dôvodov:

  • Prenosnosť - do súboru EXE môžete zahrnúť ďalšie nástroje, od ktorých závisí dávkový súbor.
  • Ochrana - EXE poskytuje ochranu pre váš zdrojový skript, aby sa zabezpečilo, že nebude neúmyselne zmenený.
  • Pohodlie - Spustiteľné súbory môžete pripnúť na ponuku Štart systému Windows alebo na panel úloh systému Windows 7.

Pomocou skriptu nižšie si môžete ľahko vytvoriť svoj vlastný spustiteľný súbor z dávkového súboru, ktorý je kompletný s požadovanými vloženými nástrojmi.

konfigurácia

Tento skript využíva rozšírené možnosti 7-ZipSFX (SelF eXtractor) na zoskupovanie a vykonávanie dávkového súboru so zahrnutými nástrojmi. Budete ich teda musieť stiahnuť (odkazy na konci) a extrahovať ich do jedného adresára.

Po stiahnutí všetkého nastavte premennú „PathTo7Zip“ v skripte na miesto, kde sa tieto súbory stiahli.

Scenár

@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

záver

Je dôležité poznamenať, že zatiaľ čo výsledkomsúbor beží presne rovnako ako zdrojový súbor BAT, nejde o skutočnú dávku na vykonateľnú konverziu. Výsledný súbor je EXE, je však určený na použitie pri samorozbaľovacích inštalátoroch. Keď spustíte výsledný súbor EXE, proces vyzerá takto:

  1. Obsah súboru EXE sa extrahuje do dočasného adresára.
  2. Číta sa konfiguračný súbor vygenerovaný skriptom.
  3. Dávka v súbore EXE sa spustí v novom príkazovom okne.
  4. Po dokončení sa dočasné súbory odstránia.

V systéme Windows Vista a nových operačných systémoch môžete vidieťpo spustení skriptu sa zobrazí nasledujúce hlásenie. Po výbere možnosti „Tento program je nainštalovaný správne“ sa v budúcnosti pre tento súbor nezobrazí okno s hlásením.

obraz

Pretože sa súbor EXE spustí v novom okne,typický spôsob protokolovania výstupu (pomocou znaku „>“) nebude fungovať podľa očakávania. Aby ste mohli výstup protokolovať, musíte ho natívne spracovať v zdrojovom skripte.

Napriek týmto malým nepríjemnostiam môže byť možnosť previesť dávkový súbor na spustiteľný súbor skutočne užitočná.

odkazy

Stiahnite si Make EXE z BAT Script od Sysadmin Geek

Stiahnite si 7-Zip Command Line Tool

Stiahnite si 7-Zip Advanced 7zSD SFX