web-dev-qa-db-fra.com

comment exécuter un fichier exécutable sans extension EXE à l'aide du script CMD?

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?

18
rsk82

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.)

13
grawity

Tout fichier avec une extension et deux premiers octets MZ sera traité comme un fichier EXE.

Essayez de suivre:

  1. Créer un nouveau fichier a.txt,
  2. Tapez-y MZ, enregistrez-le.
  3. Ouvrez cmd, allez dans son dossier,
  4. Tapez 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.

17

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:

Start-Process

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.

2
Sarrus