J'ai un script batch assez simple que j'aimerais exécuter en utilisant une macro sur mon clavier de jeu sophistiqué. Cependant, SteelSeries Engine ne prend en charge que l'ouverture d'un fichier .exe avec les boutons de macro. Y a-t-il un moyen de convertir le script en un exécutable simple?
Réponses
Trop de publicités?Oui, en effet. Ce n'est pas joli, mais c'est propre (pas besoin de nettoyer après) et c'est en fait intégré à votre système!
Dans votre dossier C:\Windows\System32\
, il y a un fichier appelé iexpress.exe
.
- Cliquez dessus avec le bouton droit de la souris et choisissez
Exécuter en tant qu'administrateur
. - Créez un nouveau SED et sélectionnez "Extraire des fichiers et exécuter une commande d'installation".
- Ajoutez le script que vous voulez, et assurez-vous que sur l'écran suivant, vous définissez le programme d'installation sur
cmd /c [votre_script.bat]
où [votre_script.bat] est le fichier de script que vous souhaitez exécuter. Si vous ne le faites pas, Windows essaiera d'utiliser Command.com (l'ancienne version de l'invite de commandes) qui n'est plus utilisée depuis longtemps. - Sélectionnez les préférences (vous devrez peut-être sélectionner "Stocker les fichiers en utilisant un nom de fichier long à l'intérieur du package), définissez un chemin de sortie (vers le fichier .exe que vous souhaitez créer), et choisissez "Aucun redémarrage".
- Cliquez sur Suivant et vous devriez avoir votre .exe!
Juste une note, ce fichier agit en fait seulement comme un wrapper pour votre script, et le script lui-même est en fait exécuté dans un dossier temporaire créé lors de l'exécution (et supprimé ensuite), donc assurez-vous de ne pas utiliser de chemins relatifs.
Voici 2 programmes gratuits que je recommande vivement pour créer des fichiers EXE à partir de fichiers batch
1 - Convertisseur de Bat en Exe
Vous pouvez utiliser les deux programmes avec une interface graphique simple.
Convertisseur de Bat en Exe
prend également en charge les commandes CLI (drapeau \?
pour obtenir de l'aide). Exemple de base tiré de la documentation:
Bat_To_Exe_Converter.exe -bat mybatfile.bat -save myprogram.exe -icon myicon
Si votre logiciel de clavier prend en charge le passage d'arguments à l'exécutable (ce qui n'est pas improbable), vous n'avez pas besoin de le faire.
cmd.exe /c
exécuterait le fichier de commandes et vous donnerait un exécutable valide à nommer pour le logiciel de clavier. Aucune conversion nécessaire signifie que vous pouvez toujours facilement apporter des modifications à votre fichier batch sans étapes supplémentaires requises.
J'ai trouvé cet article qui montre comment convertir un fichier .bat en fichier .exe en utilisant un script batch :
@ECHO OFF
ECHO Créer un EXE à partir d'un BAT
ECHO Écrit par : Jason Faulkner
ECHO SysadminGeek.com
ECHO.
ECHO.
REM Utilisation :
REM MakeExeFromBat FichierBatAConvertir [FichierInclus1] [FichierInclus2] [...]
REM
REM Paramètres Requis :
REM FichierBatAConvertir
REM Fichier batch source utilisé pour produire le fichier Exe de sortie.
REM
REM Paramètres Optionnels :
REM FichierInclus
REM Fichiers supplémentaires à inclure dans le fichier Exe.
REM Vous pouvez inclure des outils externes utilisés par le fichier batch pour qu'ils soient disponibles sur la machine en cours d'exécution.
SETLOCAL
REM Configuration (pas besoin de guillemets) :
SET CheminVers7Zip=
REM ---- Ne modifiez rien en dessous de cette ligne ----
SET FichierSortie="%~n1.exe"
SET FichiersSources="%TEMP%FichiersMakeEXE.txt"
SET Config="%TEMP%ConfigMakeEXE.txt"
SET Fichier7ZSource="%Temp%MakeEXE.7z"
REM Supprimer les fichiers existants
IF EXIST %FichierSortie% DEL %FichierSortie%
REM Construction de l'archive source
ECHO "%~dpnx1" > %FichiersSources%
:AjouterInclusion
IF {%2}=={} GOTO FinInclusion
ECHO "%~dpnx2" >> %FichiersSources%
SHIFT /2
GOTO AjouterInclusion
:FinInclusion
"%CheminVers7Zip%7za.exe" a %Fichier7ZSource% @%FichiersSources%
REM Construction du fichier de configuration
ECHO ;!@Install@!UTF-8! > %Config%
ECHO RunProgram="%~nx1" >> %Config%
ECHO ;!@InstallEnd@! >> %Config%
REM Construction de l'EXE
COPY /B "%CheminVers7Zip%7zsd.sfx" + %Config% + %Fichier7ZSource% %FichierSortie%
REM Nettoyage
IF EXIST %FichiersSources% DEL %FichiersSources%
IF EXIST %Config% DEL %Config%
IF EXIST %Fichier7ZSource% DEL %Fichier7ZSource%
ENDLOCAL
Téléchargements importants :
Différentes versions de Windows ont différents effets pour les mêmes commandes de fichiers batch, et certaines commandes sont limitées à certains systèmes Windows, par ex. findstr
et shutdown
.
BTW, Win 10 CMD ne permet pas de modifier SETLOCAL
en ligne de commande. OK pour les fichiers batch.
Voir ce lien pour différentes commandes de redémarrage des différentes versions de Windows : https://www.computerhope.com/issues/ch000321.htm
Donc, si vous deviez compiler un script sur Win 98 et l'exécuter sur Win 8.1, vous obtiendriez des résultats inattendus ou les scripts pourraient ne pas fonctionner du tout. Voir la liste des commandes ici : https://www.ionos.com/digitalguide/server/know-how/windows-cmd-commands/
Pour cette raison, il faudrait un compilateur différent sur chaque version de Windows, de préférence qui produirait un code binaire (générique) pouvant être exécuté sur le plus grand nombre possible de puces CPU, avec les mêmes jeux d'instructions. Une solution de contournement proposée par la plupart des programmes est d'emballer le script dans un fichier exe qui déballerait et exécuterait le script lorsqu'il est ouvert/exécuté, par ex. Bat_To_Exe_Converter, Bat2Exe, BatchCompiler ou Winzip : https://support.winzip.com/hc/en-us/articles/115011794948-What-is-a-Self-Extracting-Zip-File-
Pour résoudre ce problème de portabilité, les machines virtuelles sont devenues plus populaires et ont donc vu l'émergence de Java et de scripts connexes.
Cependant, il s'agirait toujours de code interprété, et pas aussi rapide que du code compilé. Même le code byte (code intermédiaire) des machines virtuelles doit encore être compilé, même s'il s'agit de (JIT) : https://aboullaite.me/understanding-jit-compiler-just-in-time-compiler/
En bref, vous pouvez obtenir un fichier exe qui contiendrait un script qui serait interprété par le processeur de commandes, mais ce ne serait pas un fichier exécutable natif, ce qui signifie qu'il ne s'exécutera pas sans un hôte par le système d'exploitation Windows.