Een batch (BAT) -script converteren naar een uitvoerbaar bestand (EXE)
Wanneer je er op in bent, werken batchbestanden en uitvoerbare bestanden vrijwel op dezelfde manier. Beide zijn gewoon een set instructies en logica voor Windows. Dus waarom zou je een batchbestand naar een uitvoerbaar bestand willen converteren als ze in essentie hetzelfde werken? Hier zijn een paar redenen:
- Draagbaarheid - u kunt extra hulpprogramma's opnemen in uw EXE-bestand waarvan het batchbestand afhankelijk is.
- Bescherming - een EXE biedt bescherming voor uw bronscript om ervoor te zorgen dat het niet per ongeluk wordt gewijzigd.
- Gemak - Uitvoerbare bestanden kunnen worden vastgemaakt aan het Windows Startmenu en / of de taakbalk van Windows 7.
Met het onderstaande script kunt u eenvoudig uw eigen uitvoerbare bestand bouwen vanuit een batchbestand, compleet met en vereiste ingesloten tools.
Configuratie
Dit script maakt gebruik van een 7-Zip geavanceerde SFX (SelF eXtractor) om het batchbestand te bundelen en uit te voeren met alle meegeleverde hulpmiddelen. U moet deze dus downloaden (links aan het einde) en deze naar een enkele map uitpakken.
Nadat u alles hebt gedownload, stelt u de variabele 'PathTo7Zip' in het script in op de locatie waar deze bestanden zijn gedownload.
Het script
@ECHO OFF ECHO Make EXE From BAT ECHO Geschreven door: Jason Faulkner ECHO SysadminGeek.com ECHO. ECHO. REM Gebruik: REM MakeExeFromBat BatFileToConvert [IncludeFile1] [IncludeFile2] [...] REM REM Vereiste parameters: REM BatFileToConvert REM-bronbatchbestand dat moet worden gebruikt om het uitvoer Exe-bestand te produceren. REM REM Optionele parameters: REM IncludeFile REM Extra bestanden om op te nemen in het Exe-bestand. REM U kunt externe hulpmiddelen opnemen die door het batchbestand worden gebruikt, zodat ze beschikbaar zijn op de uitvoerende computer. SETLOCAL REM-configuratie (geen aanhalingstekens nodig): SET PathTo7Zip = REM ---- Wijzig niets onder deze regel ---- SET OutputFile = "% ~ n1.exe" SET SourceFiles = "% TEMP% MakeEXE_files.txt" SET Config = "% TEMP% MakeEXE_config.txt" SET-bron7ZFile = "% Temp% MakeEXE.7z" REM Bestaande bestanden verwijderen IF EXIST% OutputFile% DEL% OutputFile% REM Build bronarchief ECHO "% ~ dpnx1">% SourceFiles%: AddInclude ALS % 2 == GOTO EndInclude ECHO "% ~ dpnx2" >>% SourceFiles% SHIFT / 2 GOTO AddInclude: EndInclude "% PathTo7Zip% 7za.exe" a% Source7ZFile% @% SourceFiles% REM Build-configuratiebestand ECHO ;! @ Installeer @ 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
Conclusie
Het is belangrijk om op te merken dat, hoewel het resulterende bestand precies hetzelfde is als het BAT-bronbestand, dit geen echte batch-naar-uitvoerbare conversie is. Het resulterende bestand is een EXE, maar het is bedoeld om te worden gebruikt voor zelfuitpakkende installatieprogramma's. Wanneer u het resulterende EXE-bestand uitvoert, gaat het proces ongeveer als volgt:
- De inhoud van het EXE-bestand wordt geëxtraheerd naar de map temp.
- Het configuratiebestand dat door het script wordt gegenereerd, wordt gelezen.
- Het batchbestand in het EXE-bestand wordt in een nieuw opdrachtvenster uitgevoerd.
- Als u klaar bent, worden de tijdelijke bestanden verwijderd.
Op Windows Vista en nieuwe besturingssystemen ziet u mogelijk het volgende berichtvenster nadat het script is uitgevoerd. Nadat u 'Dit programma correct geïnstalleerd' heeft geselecteerd, wordt het berichtvenster voor dit bestand in de toekomst niet meer weergegeven.
Omdat het EXE-bestand in een nieuw venster wordt gestart, werkt de typische manier om de uitvoer vast te leggen (met het teken '>') niet zoals verwacht. Om de uitvoer te loggen, zou je dit native moeten doen in je bronscript.
Ondanks deze kleine ongemakken, kan het handig zijn om een batchbestand naar een uitvoerbaar bestand te converteren.
Links
Download Make EXE from BAT Script van Sysadmin Geek
Download 7-Zip Command Line Tool
Download 7-Zip Advanced 7zSD SFX