in

Convertir un script batch (BAT) en fichier exécutable (EXE)

En fin de compte, les fichiers batch et les fichiers exécutables fonctionnent à peu près de la même manière. Les deux sont simplement un ensemble d’instructions et de logique pour l’exécution de Windows. Alors, pourquoi voudriez-vous convertir un fichier de commandes en exécutable s’ils fonctionnent essentiellement de la même manière? Voici quelques raisons:

  • Portabilité – vous pouvez inclure des outils supplémentaires dans votre fichier EXE dont dépend le fichier de commandes.
  • Protection – un EXE fournit une protection à votre script source pour s’assurer qu’il n’est pas modifié par inadvertance.
  • Commodité – Les fichiers exécutables peuvent être épinglés au menu Démarrer de Windows et / ou à la barre des tâches de Windows 7.

Avec le script ci-dessous, vous pouvez facilement créer votre propre fichier exécutable à partir d’un fichier de commandes, avec les outils intégrés requis.

Configuration

Ce script tire parti d’un SFX avancé 7-Zip (SelF eXtractor) pour regrouper et exécuter le fichier de commandes avec tous les outils inclus. Vous devrez donc les télécharger (liens fournis à la fin) et les extraire dans un seul répertoire.

Une fois que vous avez tout téléchargé, définissez la variable «PathTo7Zip» dans le script à l’emplacement où ces fichiers ont été téléchargés.

Le script

@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

Conclusion

Il est important de noter que si le fichier résultant s’exécute exactement de la même manière que le fichier BAT source, il ne s’agit pas d’une véritable conversion par lots en exécutable. Le fichier résultant est un EXE, mais il est destiné à être utilisé pour les programmes d’installation auto-extractibles. Lorsque vous exécutez le fichier EXE résultant, le processus ressemble à ceci:

  1. Le contenu du fichier EXE est extrait dans le répertoire temporaire.
  2. Le fichier de configuration généré par le script est lu.
  3. Le fichier batch contenu dans le fichier EXE est exécuté dans une nouvelle fenêtre de commande.
  4. Une fois terminé, les fichiers temporaires sont supprimés.

Sur Windows Vista et les nouveaux systèmes d’exploitation, vous pouvez voir la boîte de message suivante après l’exécution du script. Après avoir sélectionné «Ce programme a été installé correctement», la boîte de message ne s’affichera plus à l’avenir pour ce fichier.

Étant donné que le fichier EXE se lance dans une nouvelle fenêtre, la méthode classique de journalisation de la sortie (en utilisant le caractère «>») ne fonctionnera pas comme prévu. Afin de consigner la sortie, vous devez gérer cela de manière native dans votre script source.

Malgré ces inconvénients mineurs, la possibilité de convertir un fichier batch en exécutable peut vraiment s’avérer utile.

Liens

Téléchargez Make EXE à partir de BAT Script de Sysadmin Geek

Télécharger l’outil de ligne de commande 7-Zip

Télécharger 7-Zip Advanced 7zSD SFX

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Comment exporter plusieurs contacts dans Outlook 2013 vers plusieurs vCards ou une seule vCard

Comment exporter plusieurs contacts dans Outlook 2013 vers plusieurs vCards ou une seule vCard

Redimensionnement instantané de la fenêtre, contenant le curseur de la souris et compréhension de la configuration de la batterie

Redimensionnement instantané de la fenêtre, contenant le curseur de la souris et compréhension de la configuration de la batterie