Konvertera en sats (BAT) -skript till en körbar (EXE) -fil
När du hamnar på det, fungerar batchfiler och körbara filer på ungefär samma sätt. Båda är helt enkelt en uppsättning instruktioner och logik för Windows-exekvering. Så varför vill du konvertera en batchfil till en körbar om de i huvudsak fungerar detsamma? Här är några orsaker:
- Portabilitet - du kan inkludera ytterligare verktyg i din EXE-fil som batchfilen beror på.
- Skydd - ett EXE ger skydd för ditt källskript för att säkerställa att det inte är oavsiktligt modifierat.
- Bekvämlighet - Körbara filer kan pinnas till Windows Start meny och / eller Windows 7 Aktivitetsfältet.
Med skriptet nedan kan du enkelt bygga din egen körbara fil från en batchfil, komplett med och nödvändiga inbyggda verktyg.
Konfiguration
Det här skriptet utnyttjar en 7-Zip avancerad SFX (SelF eXtractor) för att paketera och utföra batchfilen med alla medföljande verktyg. Så du måste ladda ner (länkar som finns i slutet) dessa och extrahera dem till en enda katalog.
När du har laddat ner allt, ställ in variabeln 'PathTo7Zip' i skriptet till den plats där dessa filer hämtas.
Manuset
@ECHO OFF ECHO Gör EXE från BAT ECHO Skrivet av: Jason Faulkner ECHO SysadminGeek.com ECHO. EKO. REM-användning: REM MakeExeFromBat BatFileToConvert [IncludeFile1] [IncludeFile2] [...] REM REM Erforderliga parametrar: REM BatFileToConvert REM Source-filfil som används för att producera exe-filen. REM REM Valfria parametrar: REM IncludeFile REM Ytterligare filer som ska inkluderas i Exe-filen. REM Du kan inkludera externa verktyg som används av batchfilen så att de finns tillgängliga på exekveringsmaskinen. SETLOCAL REM-konfiguration (inga citat behövs): SET PathTo7Zip = REM ---- Ändra inte något under denna rad ---- SET OutputFile = "% ~ n1.exe" SET SourceFiles = "% TEMP% MakeEXE_files.txt" SET Config = "% TEMP% MakeEXE_config.txt" SET Source7ZFile = "% Temp% MakeEXE.7z" REM Ta bort befintliga filer Om EXIST% OutputFile% DEL% OutputFile% REM Bygg källarkiv ECHO "% ~ dpnx1">% SourceFiles%: AddInclude IF % 2 == GOTO SlutInclude ECHO "% ~ dpnx2" >>% SourceFiles% SHIFT / 2 GOTO AddInclude: SlutInclude "% PathTo7Zip% 7za.exe" a% Source7ZFile% @% SourceFiles% REM Bygg konfigurationsfil ECHO ; @ Installera @ UTF-8! >% Config% ECHO RunProgram = "% ~ nx1" >>% Config% ECHO;! @ InstallEnd @! >>% Config% REM Bygg EXE COPY / B "% PathTo7Zip% 7zsd.sfx" +% Config% +% Source7ZFile%% OutputFile% REM Rensa OM EXIST% SourceFiles% DEL% SourceFiles% IF EXIST% Config% DEL% Config % IF EXIST% Source7ZFile% DEL% Source7ZFile% ENDLOCAL
Slutsats
Det är viktigt att notera att medan den resulterande filen körs exakt samma som källfilens BAT-fil, är detta inte ett riktigt parti till körbar konvertering. Den resulterande filen är en EXE, men den är avsedd att användas för självutdragande installatörer. När du kör den resulterande EXE-filen går processen så här:
- Innehållet i EXE-filen extraheras till temp-katalogen.
- Konfigureringsfilen som genereras av manuset läses.
- Batchfilen i EXE-filen körs i ett nytt kommandofönster.
- När du är klar tas tempfilerna bort.
I Windows Vista och nya operativsystem kan du se följande meddelandefält efter att skriptet körs. Efter att ha valt "Detta program installerat korrekt" visas meddelandeboxen inte i framtiden för den här filen.
Eftersom EXE-filen startas i ett nytt fönster, fungerar det typiska sättet att logga ut (med hjälp av '>') inte som förväntat. För att kunna logga utdata skulle du behöva hantera det här inbyggt i ditt källskript.
Trots dessa mindre olägenheter kan det vara bra att kunna konvertera en batchfil till en körbar.
länkar
Hämta Gör EXE från BAT Script från Sysadmin Geek
Hämta 7-Zip Command Line Tool
Hämta 7-Zip Advanced 7zSD SFX