Laden...

[gelöst] String mit Befehlszeile ausführen, ohne ihn in EXE-Datei und Argumente zu splitten

Erstellt von vbtricks vor 15 Jahren Letzter Beitrag vor 15 Jahren 2.571 Views
vbtricks Themenstarter:in
205 Beiträge seit 2006
vor 15 Jahren
[gelöst] String mit Befehlszeile ausführen, ohne ihn in EXE-Datei und Argumente zu splitten

Salut,

wenn ich mir für einzelne Dateitypen die Befehlszeilen für bestimmte Befehle (Öffnen, Drucken, Play...) aus der Registry lasse, erhalte ich gewöhnlich einen String der Form

"C:\Pfad\Anwendung" "%1"

Diese würde ich nun gerne ausführen, indem ich den Parameter %1 mit dem Dateipfad ersetze und dann das ganze ausführe.

Process.Start scheint mir hier aber nicht weiter zu helfen, da die eine Überladung keine Befehlszeileparameter im String akzeptiert, die andere die Parameter als eigenes Argument haben möchte.

Manuell den String aufsplitten, erweist sich auch als schwierig, da z.B. VLC seinen Pfad nicht in Hochkommata setzt:

C:\Program Files\VideoLAN\VLC\vlc.exe --started-from-file "%1"

Für Tipps, wie ich das elegant löse, wäre ich dankbar.

Stefan

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo vbtricks,

Process.Start ("cmd.exe", "/c C:\Program Files\VideoLAN\VLC\vlc.exe --started-from-file \"%1\"");

herbivore

vbtricks Themenstarter:in
205 Beiträge seit 2006
vor 15 Jahren

Salut,

tut nicht. Wenn ich /c durch /k ersetze, sehe ich, dass ihm das Leerzeichen nach C:\Program (zurecht) aufstößt.

Der entsprechende Eintrag im Kontextmenü von wmv-Dateien tut aber (warum auch immer).

Gibt's eine Chance, das noch zum Laufen zu bekommen? Ansonsten tut's mit VLC halt nicht, Nicht-Standard-konforme Anwendungen haben dann zurecht das Nachsehen.

Stefan

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo vbtricks,

Der entsprechende Eintrag im Kontextmenü von wmv-Dateien tut aber (warum auch immer).

anscheinend versucht der Explorer solange die durch Leerzeichen getrennten Teile zusammenzusetzen, bis er einen gültigen Pfad gefunden hat. Das ist dann die Anwendung, der Rest die Parameter.

herbivore

vbtricks Themenstarter:in
205 Beiträge seit 2006
vor 15 Jahren

Ok, dann belasse ich es dabei und setze das bei VLC in den Bug Tracker.

Danke und schönen Sonntag noch,

Stefan

1.200 Beiträge seit 2007
vor 15 Jahren

Das sollte doch funktionieren, wenn man den Pfad in quotes setzt, oder?

Process.Start ("cmd.exe", "/c \"C:\Program Files\VideoLAN\VLC\vlc.exe\" --started-from-file \"%1\"");

Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!

YARRRRRR!

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo GMLOD,

ja, klar, aber es geht ja gerade darum, wie man die Zeile starten kann, ohne die Anführungsstriche an die richtige Stelle setzen zu müssen. 🙂

herbivore

3.971 Beiträge seit 2006
vor 15 Jahren

hilft eventuell das Program start.exe?

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo kleines_eichhoernchen,

meinst du wirklich start.exe oder meinst du den Built-In-Befehl start aus cmd.exe?

herbivore

3.971 Beiträge seit 2006
vor 15 Jahren

War mir eigtl. sicher, das es mal eine start.exe in Windows gegeben hat. Nein meine das start von cmd.exe.

Edit: Mit Start funktionierts leider auch nicht

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

U
1.688 Beiträge seit 2007
vor 15 Jahren

War mir eigtl. sicher, das es mal eine start.exe in Windows gegeben hat.

War, glaube ich, zu Windows 95 Zeiten. Ist wahrscheinlich spätestens mit Windows ME dahin gegangen...

vbtricks Themenstarter:in
205 Beiträge seit 2006
vor 15 Jahren

nur noch kurz zur Info:

Hatte am 5.10. eine Mail an das Projektteam von VLC geschickt und heute Rückmeldung bekommen, dass das Installer-Skript entsprechend angepasst wurde:

http://git.videolan.org/?p=vlc.git;a=commitdiff;h=f34d75845e92aba425f9e3b5954c79b5b174684d

Das nenne ich Support.