wie man eine ausführbare Datei ohne EXE-Erweiterung mit CMD-Skript ausführen?

19

Die Situation ist, dass ich eine tragbare Anwendung habe, die Umgebungsvariable gesetzt haben muss. Andernfalls wird versucht, die Einstellungen im Datenverzeichnis des Benutzerprogramms festzulegen.

Um zu vermeiden, dass die ausführbare Datei im nicht portierbaren Modus ausgeführt wird (um zu vermeiden, dass sie ohne Parameter ausgeführt wird), habe ich die Dateierweiterung ".exe" gelöscht, kann sie dann aber nicht nur mit der Maus (was ich will), sondern auch über einen startBefehl ausführen .

Gibt es eine Möglichkeit, eine solche ausführbare Datei ohne Exe-Erweiterung auszuführen?

rsk82
quelle
Ihre Frage ist nicht wirklich klar. Wenn Sie versehentlich die Erweiterung .EXE gelöscht haben, warum können Sie sie nicht wieder hinzufügen? Was hindert Sie daran?
Karan
Ich habe es absichtlich gelöscht, um es nicht versehentlich zu treffen, damit das Programm ohne Parameter ausgeführt wird. Ich möchte sicher gehen, dass das Programm nur beim Start mit Optionen ausgeführt wird.
rsk82

Antworten:

14

Ja - die einfache Eingabe des vollständigen Dateinamens des Programms funktioniert normalerweise. (Die .exeAnforderung existiert nur in der GUI-Shell.)

(Es kann jedoch sein, dass die Datei eine Erweiterung benötigt. Wenn Sie sie nicht MyProgramausführen können, benennen Sie sie in MyProgram.notexeoder um MyProgram.lolund versuchen Sie es erneut.)

Grawity
quelle
1
Die überraschte mich einmal, als ich eine selbstextrahierende Zip - Datei aus umbenannt .exezu .zip, versuchte , es durch cmd.exe zu öffnen, und es immer noch lief den Self-Extractor statt WinZip zu öffnen.
Grawity
Ich kannte den Trick mit der Änderung der Erweiterung nicht, dieses Programm könnte einen Dummy benötigen, der nicht so intuitiv ist. Aber trotzdem bin ich auf einen anderen Mist gestoßen, der besagt, dass die Anwendung selbst ihre ausführbare Hauptdatei benötigt, um einen strengen Namen zu haben.
Rsk82
1
Alles , was das beginnt mit MZdurch cmd ausgeführt werden, unter überprüfen
Петър Петров
17

Jede Datei mit einer beliebigen Erweiterung und den ersten beiden Bytes MZwird wie eine EXE- Datei behandelt.

Versuchen Sie Folgendes:

  1. Erstellen Sie eine neue a.txtDatei,
  2. Tippen Sie es ein MZ, speichern Sie es.
  3. Öffnen Sie cmd, gehen Sie zu seinem Ordner,
  4. Tippe a.txtund sieh die Fehlermeldung.

Ersetzen MZdurch MSund versuchen Sie es erneut - diesmal wird der Editor mit geöffneter Datei ausgeführt.

Петър Петров
quelle
1
Funktioniert nicht unter Windows 10. Es wird immer ein '' is not recognized as an internal or external command, operable program or batch file.Fehler
angezeigt
Ich habe es gerade zu Hause mit Windows 10 Pro versucht und es zeigt in der Tat einen Fehler, den 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.ich zuvor bei der Arbeit mit Windows 10 LTSB gemacht habe und der nicht funktioniert hat
phuclv
Es funktioniert immer noch auf meinem Windows 10 X64, das gleiche Beispiel wie oben.
Петър Петров
Wenn Sie versuchen, eine Datei ohne Erweiterung auszuführen, wird ein 'file' is not recognizedFehler ausgegeben.
Stevoisiak
2

Ich habe versucht, einen Prozess aus einer Datei ohne die Erweiterung .exe auszuführen. Wenn ich es nicht über cmd.exe geschafft habe, probiere ich einige Powershell-Befehle aus. Hier ist eine:

Start-Prozess

Die Dokumentation enthält Informationen zu Standardsyntax und UseShellExecute. Nur mit:

Start-Process -FilePath .\my-program -Wait -NoNewWindow

Der Befehl verwendet die UseShellExecute-Syntax und gibt einen Fehler über eine nicht diesem Dateityp zugeordnete Anwendung zurück. Um die Standardsyntax zu erzwingen, habe ich einen Parameter hinzugefügt, den UseShellExecute nicht hat:

Start-Process -FilePath .\my-program -Wait -RedirectStandardError ./error.txt -NoNewWindow

Mein Programm wurde gestartet und an die Konsole ausgegeben. Das hat mir gereicht, weil ich es nur zu Testzwecken brauchte.

Sarrus
quelle