Vous avez écrit un fichier batch ou un script PowerShell qui fonctionne, et vous voulez maintenant le donner à quelqu’un sous forme d’un seul .exe : un fichier à double-cliquer, sans question « ouvrir avec » ni console pleine de commandes.
Vous n’avez pas besoin d’un « convertisseur BAT en EXE » en ligne pour cela. Windows inclut déjà un outil qui le fait, et PowerShell dispose d’un module gratuit et ouvert qui fait de même pour les scripts .ps1. Les deux fonctionnent sur votre propre ordinateur, donc le fichier obtenu est construit à partir de votre script et de rien d’autre.
Pressé ?
- Fichier batch (.bat / .cmd) : appuyez sur Win + R, tapez
iexpresset empaquetez le fichier avec la commande d’installationcmd /c yourscript.bat. - PowerShell (.ps1) : exécutez
Install-Module ps2exe -Scope CurrentUserune fois, puisInvoke-ps2exe .\script.ps1 .\script.exe. - Python (.py) :
pip install pyinstaller, puispyinstaller --onefile script.py. - Envie d’une icône ? Récupérez-en une dans n’importe quel programme avec l’Extracteur d’icônes gratuit.
Méthode 1 : BAT en EXE avec IExpress (intégré à Windows)
IExpress fait partie de Windows depuis des décennies. Il a été conçu pour créer de petits programmes d’installation : il regroupe des fichiers dans un seul EXE, les extrait dans un dossier temporaire quand l’EXE s’exécute, puis lance une commande. Cette commande peut être votre fichier batch.
- Appuyez sur Win + R, tapez
iexpresset appuyez sur Enter. - Choisissez Create new Self Extraction Directive file et cliquez sur Next.
- Choisissez Extract files and run an installation command.
- Donnez un titre au paquet (il s’affiche dans le titre de la fenêtre de chaque message).
- Demande de confirmation : No prompt. Contrat de licence : Do not display a license.
- Packaged files : cliquez sur Add et choisissez votre fichier
.bat(et les fichiers dont il a besoin). - Install Program : tapez
cmd /c yourscript.batvous-même, avec le nom de votre fichier. Choisir simplement le .bat dans la liste ne fait souvent rien, car IExpress ne lance pas directement les fichiers batch. - Show window : Default pour voir la console, ou Hidden pour une exécution silencieuse.
- Message de fin : No message.
- Package name : choisissez où enregistrer l’EXE, et cochez Hide File Extracting Progress Animation from User et Store files using Long File Name inside Package.
- Restart : No restart. Enregistrez le fichier SED si vous voulez reconstruire plus tard, puis cliquez sur Next pour créer l’EXE.
À savoir : le script s’exécute depuis un dossier temporaire, pas depuis l’emplacement de l’EXE. Une ligne comme copy data.txt backup\ cherche dans ce dossier temporaire. Utilisez des chemins complets (%USERPROFILE%\Documents\data.txt) pour les fichiers que le script lit ou écrit hors du paquet.
Méthode 2 : PowerShell en EXE avec ps2exe
ps2exe est un module PowerShell gratuit et open source, publié dans la PowerShell Gallery officielle. Il enveloppe un script .ps1 dans un petit EXE qui l’exécute, et permet de définir une icône, une version et l’affichage ou non d’une fenêtre de console.
- Ouvrez PowerShell (pas besoin de droits d’administrateur) et installez le module une fois :
Si PowerShell demande d’installer le fournisseur NuGet ou de faire confiance au dépôt PSGallery, répondez Y.Install-Module ps2exe -Scope CurrentUser - Allez dans le dossier de votre script et créez l’EXE :
Invoke-ps2exe .\script.ps1 .\script.exe - Options utiles :
-noConsole: pas de fenêtre de console (pour les scripts qui affichent des formulaires ou des boîtes de message).-iconFile .\app.ico: l’icône de l’EXE.-requireAdmin: demande les droits d’administrateur au démarrage.-title "My Tool" -version "1.0.0": ce que Windows affiche dans les propriétés du fichier.
Vous préférez une fenêtre à la ligne de commande ? Lancez Win-PS2EXE après avoir installé le module : c’est le même outil avec un petit formulaire.
Autres scripts : Python, AutoHotkey, Node.js
- Python :
pyinstaller --onefile script.pycrée un seul EXE dans le dossierdist. Ajoutez--noconsolepour un programme avec fenêtre. - AutoHotkey : le programme d’installation inclut Ahk2Exe : faites un clic droit sur le fichier .ahk et choisissez Compile Script.
- Node.js : les versions récentes (20 et suivantes) peuvent créer une application exécutable unique (voir la page « Single executable applications » de la documentation de Node.js).
Avez-vous vraiment besoin d’un EXE ?
Souvent, une solution plus simple suffit :
- Un raccourci. Faites un clic droit sur le fichier .bat, Send to → Desktop (create shortcut), puis donnez une icône au raccourci dans ses propriétés. Un double-clic dessus exécute le script.
- Une tâche planifiée. Pour un script qui doit s’exécuter chaque jour ou à l’ouverture de session, le Planificateur de tâches lance directement un .bat ou un .ps1.
- Le script lui-même. Si les personnes avec qui vous le partagez utilisent Windows, un fichier .bat s’exécute déjà d’un double-clic.
Trois choses que tout « convertisseur BAT en EXE » passe sous silence
- Votre code n’est pas caché. Ces outils stockent le script dans l’EXE, souvent en texte brut. N’importe qui peut le relire, par exemple avec notre Extracteur de chaînes, qui liste le texte lisible de n’importe quel fichier. N’y mettez jamais de mots de passe, de jetons ou de clés.
- Les antivirus peuvent protester. Les logiciels malveillants utilisent les mêmes enveloppes, si bien que Windows Defender et SmartScreen peuvent signaler un EXE de script parfaitement inoffensif. Le signer avec un certificat de signature de code aide, et Microsoft accepte les signalements de faux positifs pour les fichiers que vous avez créés.
- Un EXE venant d’un site web est un fichier que vous ne pouvez pas vérifier. Un convertisseur en ligne vous renvoie un fichier construit sur un serveur dont vous ne savez rien. C’est pourquoi nous expliquons la méthode intégrée au lieu d’en proposer un : avec IExpress ou ps2exe, vous savez exactement ce que contient le fichier.
On vous a donné un EXE et vous voulez savoir ce qu’il exécute avant de l’ouvrir ? Lisez comment analyser un EXE sans l’exécuter.
Des outils gratuits pour la suite
Tous fonctionnent dans votre navigateur : vos fichiers ne sont envoyés nulle part.