/ / Converti uno script batch (BAT) in un file eseguibile (EXE)

Convertire uno script batch (BAT) in un file eseguibile (EXE)

Quando ci si arriva, file batch ei file eseguibili funzionano praticamente allo stesso modo. Entrambi sono semplicemente un insieme di istruzioni e logica per l'esecuzione di Windows. Quindi perché dovresti voler convertire un file batch in un eseguibile se essenzialmente funzionano allo stesso modo? Ecco alcuni motivi:

  • Portabilità: è possibile includere strumenti aggiuntivi nel file EXE da cui dipende il file batch.
  • Protezione: un file EXE fornisce protezione per lo script di origine per garantire che non venga inavvertitamente modificato.
  • Convenienza: i file eseguibili possono essere aggiunti al menu Start di Windows e / o alla barra delle applicazioni di Windows 7.

Con lo script seguente, è possibile creare facilmente il proprio file eseguibile da un file batch, completo e con gli strumenti incorporati richiesti.

Configurazione

Questo script sfrutta un avanzato 7-ZipSFX (SelF eXtractor) per raggruppare ed eseguire il file batch con tutti gli strumenti inclusi. Quindi dovrai scaricare (collegamenti forniti alla fine) questi ed estrarli in una singola directory.

Una volta scaricato tutto, imposta la variabile "PathTo7Zip" nello script nella posizione in cui questi file sono stati scaricati.

Il copione

@ECHO OFF
ECHO Make EXE From BAT
ECHO Written by: Jason Faulkner
ECHO SysadminGeek.com
ECHO.
ECHO.
REM Usage:
REM MakeExeFromBat BatFileToConvert [IncludeFile1] [IncludeFile2] [...]
REM
REM Required Parameters:
REM  BatFileToConvert
REM      Source batch file to use to produce the output Exe file.
REM
REM Optional Parameters:
REM  IncludeFile
REM      Additional files to include in the Exe file.
REM      You can include external tools used by the batch file so they are available on the executing machine.
SETLOCAL
REM Configuration (no quotes needed):
SET PathTo7Zip=
REM ---- Do not modify anything below this line ----
SET OutputFile="%~n1.exe"
SET SourceFiles="%TEMP%MakeEXE_files.txt"
SET Config="%TEMP%MakeEXE_config.txt"
SET Source7ZFile="%Temp%MakeEXE.7z"
REM Remove existing files
IF EXIST %OutputFile% DEL %OutputFile%
REM Build source archive
ECHO "%~dpnx1" > %SourceFiles%
:AddInclude
IF {%2}=={} GOTO EndInclude
ECHO "%~dpnx2" >> %SourceFiles%
SHIFT /2
GOTO AddInclude
:EndInclude
"%PathTo7Zip%7za.exe" a %Source7ZFile% @%SourceFiles%
REM Build config file
ECHO ;!@Install@!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

Conclusione

È importante notare che mentre il risultatoil file funziona esattamente come il file BAT di origine, non si tratta di un vero batch in conversione eseguibile. Il file risultante è un EXE, tuttavia è destinato all'uso per programmi di installazione autoestraenti. Quando si esegue il file EXE risultante, il processo procede in questo modo:

  1. Il contenuto del file EXE viene estratto nella directory temp.
  2. Viene letto il file di configurazione generato dallo script.
  3. Il file batch contenuto nel file EXE viene eseguito in una nuova finestra di comando.
  4. Al termine, i file temporanei vengono rimossi.

Su Windows Vista e sui nuovi sistemi operativi, potresti vedereseguente finestra di messaggio dopo l'esecuzione dello script. Dopo aver selezionato "Questo programma è stato installato correttamente", la finestra di messaggio non verrà visualizzata in futuro per questo file.

Immagine

Poiché il file EXE si avvia in una nuova finestra,il modo tipico di registrare l'output (usando il carattere ">") non funzionerà come previsto. Per registrare l'output, è necessario gestirlo nativamente nello script di origine.

Nonostante questi piccoli inconvenienti, essere in grado di convertire un file batch in un eseguibile può davvero tornare utile.

link

Scarica Crea EXE da BAT Script da Sysadmin Geek

Scarica 7-Zip Command Line Tool

Scarica 7-Zip Advanced 7zSD SFX