30Aug

Konverter et batch( BAT) -skript til en eksekverbar( EXE) -fil

Når du kommer til det, fungerer batchfiler og kjørbare filer ganske mye på samme måte. Begge er bare et sett med instruksjoner og logikk for Windows-utførelsen. Så hvorfor vil du konvertere en batchfil til en kjørbar hvis de egentlig jobber det samme? Her er noen grunner:

  • Portability - du kan inkludere flere verktøy i din EXE-fil som batchfilen avhenger av.
  • Protection - en EXE gir beskyttelse for kilde skriptet for å sikre at det ikke utilsiktet endres.
  • Convenience - Kjørbare filer kan festes til Windows Start-menyen og / eller Windows 7 oppgavelinjen.

Med skriptet nedenfor kan du enkelt bygge din egen kjørbare fil fra en batchfil, komplett med og nødvendige innebygde verktøy.

-konfigurasjon

Dette skriptet benytter seg av en 7-Zip-avansert SFX( SelF eXtractor) til å pakke og utføre batchfilen med alle inkluderte verktøy. Så du må laste ned( koblinger som tilbys på slutten) disse og trekke dem ut i en enkelt katalog.

Når du har alt lastet ned, setter du 'PathTo7Zip'-variabelen i skriptet til stedet der disse filene lastes ned.

Skriptet

@ECHO OFF ECHO Lag EXE fra BAT ECHO Skrevet av: Jason Faulkner ECHO SysadminGeek.com ECHO.EKKO.REM-bruk: REM MakeExeFromBat BatFileToConvert [IncludeFile1] [IncludeFile2] [...] REM REM Krevde parametere: REM BatFileToConvert REM Source-batchfil som skal brukes til å produsere utdata-Exe-filen. REM REM Valgfrie parametere: REM IncludeFile REM Ekstra filer som skal inkluderes i Exe-filen. REM Du kan inkludere eksterne verktøy som brukes av batchfilen, slik at de er tilgjengelige på eksekveringsmaskinen. SETLOCAL REM-konfigurasjon( ingen anførselstegn trengs): SET PathTo7Zip = REM ---- Ikke endre noe under denne linjen ---- SET OutputFile = "% ~ n1.exe" SET SourceFiles = "% TEMP% MakeEXE_files.txt" SETConfig = "% TEMP% MakeEXE_config.txt" SET Source7ZFile = "% Temp% MakeEXE.7z" REM Fjern eksisterende filer HVIS EXIS% OutputFile% DEL% OutputFile% REM Bygg kildearkiv ECHO "% ~ dpnx1" & gt;% SourceFiles%: AddInclude IF{ % 2} =={ } GOTO EndInclude ECHO "% ~ dpnx2" & gt; & gt;% SourceFiles% SHIFT / 2 GOTO AddInclude: EndInclude "% PathTo7Zip% 7za.exe" a% Source7ZFile% @% SourceFiles% REM Bygg konfigurasjonsfilen ECHO;! @ Install @! UTF-8!& Gt;% Config% ECHO RunProgram = "% ~ nx1" & gt; & gt;% Config% ECHO;! @ InstallEnd @!& Gt; & gt;% Config% REM Bygg EXE COPY / B "% PathTo7Zip% 7zsd.sfx" +% Config% +% Source7ZFile%% OutputFile% REM Ryd opp IF EXIST% SourceFiles% DEL% SourceFiles% IF EXIST% Config% DEL% Config% IFEksempel% Source7ZFile% DEL% Source7ZFile% ENDLOCAL

Konklusjon

Det er viktig å merke seg at mens den resulterende filen kjører nøyaktig det samme som kilde-BAT-filen, er dette ikke en sann batch til kjørbar konvertering. Den resulterende filen er en EXE, men den er ment å brukes til selvutpakkende installatører. Når du kjører den resulterende EXE-filen, går prosessen noe slikt:

  1. Innholdet i EXE-filen hentes til temp-katalogen.
  2. Konfigureringsfilen som genereres av skriptet, er lest.
  3. Batchfilen i EXE-filen utføres i et nytt kommandovindu.
  4. Når du er ferdig, blir tempfiler fjernet.

I Windows Vista og nye OS kan du se følgende meldingsboks etter at skriptet er kjørt. Etter at du har valgt "Dette programmet er riktig installert", vil meldingsboksen ikke vises i fremtiden for denne filen.

Fordi EXE-filen starter i et nytt vindu, virker den vanlige måten å logge utdata( ved hjelp av "& gt;" -karmen) ikke som forventet. For å logge utgangen, må du håndtere dette innfødt i kilde skriptet ditt.

Til tross for disse mindre ulemper, kan det være nyttig å kunne konvertere en batchfil til en kjørbar.

Lenker

Last ned Lag EXE fra BAT Script fra Sysadmin Geek

Last ned 7-Zip kommandolinjeverktøy

Last ned 7-Zip Advanced 7zSD SFX