Konverter et parti (BAT) script til en eksekverbar (EXE) fil
Når du kommer til det, arbejder batch-filer og eksekverbare filer stort set på samme måde. Begge er simpelthen et sæt instruktioner og logik til Windows-exekvering. Så hvorfor vil du konvertere en batch-fil til en eksekverbar, hvis de i det væsentlige fungerer det samme? Her er et par grunde:
- Bærbarhed - du kan inkludere ekstra værktøjer i din EXE-fil, som batchfilen afhænger af.
- Beskyttelse - en EXE giver beskyttelse til dit kilde script for at sikre, at det ikke utilsigtet ændres.
- Convenience - Eksekverbare filer kan fastgøres til Windows Start Menu og / eller Windows 7 Opgavelinje.
Med scriptet nedenfor kan du nemt opbygge din egen eksekverbare fil fra en batchfil, komplet med og nødvendige indlejrede værktøjer.
Konfiguration
Dette script udnytter en 7-Zip avanceret SFX (SelF eXtractor) til at pakke og udføre batchfilen med eventuelle medfølgende værktøjer. Så du skal downloade (links til rådighed i slutningen) disse og uddrage dem til en enkelt mappe.
Når du har downloadet alt, skal du indstille variablen 'PathTo7Zip' i scriptet til det sted, hvor disse filer hentes.
Manuskriptet
@ECHO FRA ECHO Lav EXE FRA BAT ECHO Skrevet af: Jason Faulkner ECHO SysadminGeek.com ECHO. EKKO. REM Anvendelse: REM MakeExeFromBat BatFileToConvert [IncludeFile1] [IncludeFile2] [...] REM REM Krævede parametre: REM BatFileToConvert REM Source-batchfil til brug for at producere output Exe-filen. REM REM Valgfrie parametre: REM IncludeFile REM Yderligere filer, der skal medtages i Exe-filen. REM Du kan inkludere eksterne værktøjer, der bruges af batchfilen, så de er tilgængelige på eksekveringsmaskinen. SETLOCAL REM Configuration (ingen citater er nødvendige): SET PathTo7Zip = REM ---- Ikke ændrer noget under denne linje ---- SET OutputFile = "% ~ n1.exe" SET SourceFiles = "% TEMP% MakeEXE_files.txt" SET Config = "% TEMP% MakeEXE_config.txt" SET Source7ZFile = "% Temp% MakeEXE.7z" REM Fjern eksisterende filer HVIS EXIST% OutputFile% DEL% OutputFile% REM Byg kildearkiv ECHO "% ~ dpnx1">% SourceFiles%: AddInclude Hvis % 2 == GOTO EndInclude ECHO "% ~ dpnx2" >>% SourceFiles% SHIFT / 2 GOTO AddInclude: EndInclude "% PathTo7Zip% 7za.exe" a% Source7ZFile% @% SourceFiles% REM Byg konfigurationsfil ECHO ;! @ Installer @ UTF-8!! >% Config% ECHO RunProgram = "% ~ nx1" >>% Config% ECHO;! @ InstallEnd @! >>% Config% REM Byg EXE COPY / B "% PathTo7Zip% 7zsd.sfx" +% Konfiguration% +% Source7ZFile%% OutputFile% REM Clean up IF EXIST% SourceFiles% DEL% SourceFiles% IF EXIST% Config% DEL% Config % IF EXIST% Source7ZFile% DEL% Source7ZFile% ENDLOCAL
Konklusion
Det er vigtigt at bemærke, at mens den resulterende fil kører nøjagtigt den samme som kilde-BAT-filen, er dette ikke en sand batch til eksekverbar konvertering. Den resulterende fil er en EXE, men den er beregnet til at blive brugt til selvudpakkende installatører. Når du udfører den resulterende EXE-fil, går processen sådan som sådan:
- Indholdet af EXE-filen udtrækkes til temp-mappen.
- Den konfigurationsfil, der genereres af scriptet, læses.
- Batchfilen i EXE-filen udføres i et nyt kommandovindue.
- Når du er færdig, fjernes temp-filerne.
På Windows Vista og nye OS kan du muligvis se følgende meddelelsesboks, efter at scriptet er kørt. Når du har valgt 'Dette program installeret korrekt', vises meddelelsesboksen ikke i fremtiden for denne fil.
Fordi EXE-filen lanceres i et nyt vindue, fungerer den typiske måde at logge output (ved hjælp af '>' char) ikke som forventet. For at logge outputet, skal du håndtere dette indbygget i dit kilde script.
På trods af disse mindre ulemper kan det virkelig være nyttigt at kunne konvertere en batch-fil til en eksekverbar.
Links
Download Gør EXE fra BAT Script fra Sysadmin Geek
Download 7-Zip Command Line Tool
Download 7-Zip Advanced 7zSD SFX