comment exécuter un fichier exécutable sans extension EXE en utilisant le script CMD?

19

La situation est que j'ai une application portable qui doit avoir une variable d'environnement définie. Il essaie également 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 qu'il s'exécute sans aucun paramètre), j'ai effacé l'extension ".exe" du fichier, mais je ne peux pas l'exécuter non seulement avec la souris (ce que je veux) mais aussi via la startcommande .

Existe-t-il un moyen d'exécuter un tel fichier exécutable qui n'a pas d'extension exe?

rsk82
la source
Votre question n'est pas vraiment claire. Si vous avez accidentellement supprimé l'extension .EXE, pourquoi ne pouvez-vous pas la rajouter? Qu'est-ce qui vous en empêche?
Karan
Je l'ai supprimé exprès pour ne pas le toucher accidentellement afin que le programme s'exécute sans aucun paramètre. Je veux être sûr d'exécuter uniquement le programme avec des options au démarrage.
rsk82

Réponses:

14

Oui - la simple saisie du nom de fichier complet du programme fonctionne généralement. (La .execondition n'existe que dans le shell GUI.)

(Il se peut cependant que le fichier ait besoin d' une extension - donc si vous ne parvenez pas MyProgramà l'exécuter, renommez-le en MyProgram.notexeou MyProgram.lolet réessayez.)

user1686
la source
1
Cela m'a surpris une fois, lorsque j'ai renommé un fichier Zip auto-extractible de .exeà .zip, j'ai essayé de l'ouvrir via cmd.exe, et il a toujours exécuté l'auto-extracteur au lieu d'ouvrir WinZip.
user1686
Je ne connaissais pas l'astuce pour changer d'extension, ce programme pourrait avoir besoin d'un faux, ce n'est pas si intuitif. Mais de toute façon, j'ai rencontré un autre problème: l'application elle-même a besoin de son exécutable principal pour avoir un nom strict.
rsk82
1
Tout ce qui commence par MZsera exécuté par cmd, vérifiez ci
Петър Петров
17

Tout fichier avec n'importe quelle extension et les deux premiers octets MZsera traité comme un EXE.

Essayez de suivre:

  1. Créez un nouveau a.txtfichier,
  2. Tapez-le MZ, enregistrez-le.
  3. Ouvrez cmd, allez dans son dossier,
  4. Tapez a.txtet voyez le message d'erreur.

Remplacez MZpar MSet réessayez - cette fois, le bloc-notes s'exécutera avec le fichier ouvert.

Петър Петров
la source
1
Ne fonctionne pas sous Windows 10. Il affiche toujours une '' is not recognized as an internal or external command, operable program or batch file.erreur
phuclv
Je viens d'essayer à la maison avec dans Windows 10 Pro et cela montre en effet une erreur This version of D:\test.txt is not compatible with the version of Windows you're running. Check your computer's system information and then contact the software publisher.auparavant, j'ai utilisé Windows 10 LTSB au travail et cela n'a pas fonctionné
phuclv
Cela fonctionne toujours sur mon Windows 10 X64, le même exemple que ci-dessus.
Петър Петров
Si vous essayez d'exécuter un fichier sans aucune extension, il générera une 'file' is not recognizederreur.
Stevoisiak
2

J'ai essayé d'exécuter le processus à partir d'un fichier sans l'extension .exe. Lorsque je n'ai pas réussi à le faire à partir de cmd.exe, j'essaie certaines commandes powershell. En voici un:

Processus de démarrage

La documentation dit sur la syntaxe par défaut et 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 écrit la sortie sur la console. C'était suffisant pour moi, car je n'en avais besoin qu'à des fins de test.

Sarrus
la source