La situation est que j'ai une application portable qui doit avoir une variable d'environnement définie. Sinon, il essaie de définir ses paramètres dans le répertoire de données du programme utilisateur.
Pour éviter d'exécuter l'exécutable en mode non-portable (pour éviter de le laisser s'exécuter sans aucun paramètre), j'ai effacé l'extension ".exe" du fichier, mais je ne peux pas l'exécuter non seulement à la souris (ce que je veux), mais aussi via start
commander.
Existe-t-il un moyen d'exécuter un tel fichier exécutable sans extension EXE?
Oui - il suffit généralement d'entrer le nom de fichier complet du programme. (L'exigence .exe
n'existe que dans le shell de l'interface graphique.)
(Il est possible que le fichier nécessite une extension , bien que - donc Si vous ne pouvez pas exécuter MyProgram
, renommez-le MyProgram.notexe
ou MyProgram.lol
et essayez à nouveau.)
Tout fichier avec une extension et deux premiers octets MZ
sera traité comme un fichier EXE.
Essayez de suivre:
a.txt
,MZ
, enregistrez-le.cmd
, allez dans son dossier,a.txt
et consultez le message d'erreur.Remplacez MZ
par MS
et réessayez - le bloc-notes s’exécutera avec le fichier ouvert.
J'ai essayé d'exécuter un processus à partir d'un fichier sans l'extension .exe. Quand je n'ai pas réussi à le faire à partir de cmd.exe, je tente quelques commandes PowerShell. En voici un:
La documentation parle de la syntaxe par défaut et de UseShellExecute. Avec juste:
Start-Process -FilePath .\my-program -Wait -NoNewWindow
la commande utilise la syntaxe UseShellExecute et renvoie une erreur concernant l'application non associée à ce type de fichier. Pour forcer la syntaxe par défaut, j'ai ajouté un paramètre que UseShellExecute n'a pas:
Start-Process -FilePath .\my-program -Wait -RedirectStandardError ./error.txt -NoNewWindow
Mon programme a été démarré et a écrit la sortie sur la console. Cela me suffisait, car je n'en avais besoin que pour les besoins du test.