30Aug
Als u er helemaal klaar voor 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 enkele redenen:
- draagbaarheid - u kunt extra hulpprogramma's opnemen in uw EXE-bestand waarvan het batchbestand afhankelijk is.
- Protection - 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 samenstellen uit 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 tools. 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 UIT ECHO Maak EXE van 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" SETConfig = "% TEMP% MakeEXE_config.txt" SET-bron7ZFile = "% Temp% MakeEXE.7z" REM Bestaande bestanden verwijderen IF EXIST% OutputFile% DEL% OutputFile% REM Build bronarchief ECHO "% ~ dpnx1" & gt;% SourceFiles%: AddInclude ALS{ % 2} =={ } GOTO EndInclude ECHO "% ~ dpnx2" & gt; & gt;% SourceFiles% SHIFT / 2 GOTO AddInclude: EndInclude "% PathTo7Zip% 7za.exe" a% Source7ZFile% @% SourceFiles% REM Build-configuratiebestand ECHO;! @ Install @ UTF-8!& Gt;% Config% ECHO RunProgram = "% ~ nx1" & gt; & gt;% Config% ECHO;! @ InstallEnd @!& Gt; & gt;% 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% IFEXIST% Source7ZFile% DEL% Source7ZFile% ENDLOCALConclusie
Het is belangrijk om op te merken dat, hoewel het resulterende bestand exact hetzelfde is als het BAT-bronbestand, dit geen echte conversie van een batch naar een uitvoerbaar bestand 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, verloopt 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' hebt geselecteerd, wordt het berichtvenster in de toekomst niet weergegeven voor dit bestand.
Omdat het EXE-bestand in een nieuw venster wordt gestart, werkt de gebruikelijke manier om de uitvoer vast te leggen( met de opdracht '& gt;') niet zoals verwacht. Om de uitvoer te loggen, zou je deze native in je bronscript moeten verwerken.
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 opdrachtregel tool
Download 7-Zip Advanced 7zSD SFX