Windows Pfadnamen mit Leerstelle

Windows Pfadnamen mit Leerstelle

am 16.01.2008 08:53:59 von Hago Ziegler

Hallo,

ich versuche mit system() eine *.exe-Datei aufzurufen.
Das klappt leider nicht, weil sich in dem Pfad dorthin eine typische
Windows-Leerstelle befindet. Fehlermeldung:
' Der Befehl "Synchredible.exe" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.'

Wenn ich es in einem anderen Verzeichnis ohne Leerstelle im Pfad teste,
funktioniert es prima.

Was kann ich also tun, dass die EXE trotz Leerstelle gefunden wird?

Gruß, Hago

Re: Windows Pfadnamen mit Leerstelle

am 16.01.2008 13:23:07 von hjp-usenet2

On 2008-01-16 07:53, Hago Ziegler wrote:
>
> Hallo,
>
> ich versuche mit system() eine *.exe-Datei aufzurufen.
> Das klappt leider nicht, weil sich in dem Pfad dorthin eine typische
> Windows-Leerstelle befindet. Fehlermeldung:
> ' Der Befehl "Synchredible.exe" ist entweder falsch geschrieben oder
> konnte nicht gefunden werden.'
>
> Wenn ich es in einem anderen Verzeichnis ohne Leerstelle im Pfad teste,
> funktioniert es prima.
>
> Was kann ich also tun, dass die EXE trotz Leerstelle gefunden wird?

Wie rufst Du system denn auf? Mit einem Parameter oder mehreren?

system("c:\\mein programm\\mit leerzeichen.exe /option parameter");

oder

system("c:\\mein programm\\mit leerzeichen.exe", "/option", "parameter");

letztere Version sollte "c:\\mein programm\\mit leerzeichen.exe" direkt
aufrufen, während erstere vermutlich den Commandinterpreter (cmd.exe
unter Windows) aufruft.

hp

Re: Windows Pfadnamen mit Leerstelle

am 16.01.2008 13:43:38 von Ervin Peters

Am Wed, 16 Jan 2008 13:23:07 +0100 schrieb Peter J. Holzer:

> On 2008-01-16 07:53, Hago Ziegler wrote:
> Wie rufst Du system denn auf? Mit einem Parameter oder mehreren?
>
> system("c:\\mein programm\\mit leerzeichen.exe /option parameter");

möglicherweise könnte auch ein

system("c:\\mein programm\\mit\ leerzeichen.exe /option parameter");

helfen

man escape-sequenzen.

ervin

Re: Windows Pfadnamen mit Leerstelle

am 16.01.2008 16:06:40 von Hago Ziegler

Peter J. Holzer schrieb:


> Wie rufst Du system denn auf? Mit einem Parameter oder mehreren?

Im Moment sieht es so aus:
system("C:/Programme/ASCOMP Software/Synchredible/Synchredible.exe");

Die Optionen und Parameter habe ich erstmal weg gelassen - das kommt dann,
wenn der Programmaufruf erstmal klappt.

Wenn ich das Verzeichnis "ASCOMP Software" umbenenne zu "ASCOMPSoftware"
(also ohne Leerzeichen), klappt alles ganz vorzüglich.
Ich kann's nur nicht so lassen, weil einige andere Programme dann nicht
mehr richtig funktionieren.


> system("c:\\mein programm\\mit leerzeichen.exe /option parameter");
> system("c:\\mein programm\\mit leerzeichen.exe", "/option",
> "parameter");

Du glaubst nicht, wie viele solche Variationen ich schon ausprobiert habe

Gruß, Hago

Re: Windows Pfadnamen mit Leerstelle

am 16.01.2008 16:16:16 von Hago Ziegler

Ervin Peters schrieb:


> system("c:\\mein programm\\mit\ leerzeichen.exe /option parameter")

das: ...m\\mit\ lee.... verstehe ich ehrlich gesagt nicht, oder ist es
ein Tippfehler?
Ansonsten, mit doppelten Backslashes habe ich's schon versucht.

Gruß, Hago

Re: Windows Pfadnamen mit Leerstelle

am 16.01.2008 16:41:03 von Ervin Peters

Am Wed, 16 Jan 2008 16:16:16 +0100 schrieb Hago Ziegler:

> Ervin Peters schrieb:
>
>
>> system("c:\\mein programm\\mit\ leerzeichen.exe /option parameter")
>
> das: ...m\\mit\ lee.... verstehe ich ehrlich gesagt nicht, oder ist
> es ein Tippfehler?
> Ansonsten, mit doppelten Backslashes habe ich's schon versucht.
>
> Gruß, Hago

In meiner bash schreibe ich entweder:

$ dosomethingwith '~/alage/file mit leerzeichen'

oder ich schreibe:

$ dosomething with ~/ablage/file\ mit\ leerzeichen

Das escapen mit dem backslash hält die bash davon ab die leerzeichen als
parametertrenner zu interpretieren. Auf DOSen müsste das ähnlich sein.

Damit die Escapesequenzen aber von perls Stringverarbeitung nicht
ausgewertet werden müßte dann stehen:

system('c:\\mein programm\\mit\ leerzeichen.exe /option parameter')

funktionieren könnte auch

system("'c:/mein programm/mit leerzeichen.exe' /option parameter")

ervin

Re: Windows Pfadnamen mit Leerstelle

am 16.01.2008 17:08:24 von Hago Ziegler

Ervin Peters schrieb:


> system('c:\\mein programm\\mit\ leerzeichen.exe /option parameter')

Toll, das hat geklappt!
Vielen Dank, jetzt kann's weitergehen.

Gruß, Hago