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:
- Obsah súboru EXE sa extrahuje do dočasného adresára.
- Číta sa konfiguračný súbor vygenerovaný skriptom.
- Dávka v súbore EXE sa spustí v novom príkazovom okne.
- 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.
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