30Aug

Konvertera en sats( BAT) -skript till en exekverbar( EXE) -fil

När du klarar dig, 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 skulle du vilja konvertera en batchfil till en körbar om de i huvudsak fungerar detsamma? Här är några orsaker:

  • Portability - du kan inkludera ytterligare verktyg i din EXE-fil som batchfilen beror på.
  • Protection - ett EXE ger skydd för ditt källscript för att säkerställa att det inte av misstag ändras.
  • Bekvämlighet - Körbara filer kan pinnas till Windows Start-menyn 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 inbäddade verktyg.

-konfiguration

Det här skriptet utnyttjar en 7-Zip Advanced SFX( SelF eXtractor) för att paketera och exekvera 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äller du in variabeln 'PathTo7Zip' i skriptet till den plats där dessa filer hämtas.

Skriptet

@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-batchfil 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" SETConfig = "% 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" & gt;% SourceFiles%: AddInclude IF{ % 2} =={ } GOTO EndInclude ECHO "% ~ dpnx2" & gt; & gt;% SourceFiles% SHIFT / 2 GOTO AddInclude: SlutInclude "% PathTo7Zip% 7za.exe" a% Source7ZFile% @% SourceFiles% REM Bygg konfigurationsfil 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 Rensa OM EXIST% SourceFiles% DEL% SourceFiles% IF EXIST% Config% DEL% Config% IFEXIST% 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 något som här:

  1. Innehållet i EXE-filen extraheras till temp-katalogen.
  2. Konfigureringsfilen som genereras av manuset läses.
  3. Batchfilen i EXE-filen körs i ett nytt kommandofönster.
  4. När du är klar tas tempfilerna bort.

I Windows Vista och nya operativsystem kan du se följande meddelandebox när 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 inte det typiska sättet att logga ut( med hjälp av '& gt;' char) som förväntat. För att kunna logga ut, 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

Ladda ner Gör EXE från BAT Script från Sysadmin Geek

Hämta 7-Zip kommandoradsverktyg

Hämta 7-Zip Advanced 7zSD SFX