shell Leerzeichen
Moderator: Moderatoren
shell Leerzeichen
Hallo,
weiß jemand zufällig, wie man dem Shellaufruf Parameter mit Leerzeichen übergeben kann?
Das Programm Foxit Reader wird in meinem Fall korrekt gestartet. Der Aufruf der Datei scheitert jedoch an den Leerzeichen im Pfad.
Shell("C:\Programme\Foxit Software\Foxit Reader\Foxit Reader.exe", 1, "-NoRegister d:\Moritz\\Park Nord\Stunden\Plan Dez 2007\test.pdf -n 1")
(OO 2.3.1, XP)
Vielen Dank
Moritz
weiß jemand zufällig, wie man dem Shellaufruf Parameter mit Leerzeichen übergeben kann?
Das Programm Foxit Reader wird in meinem Fall korrekt gestartet. Der Aufruf der Datei scheitert jedoch an den Leerzeichen im Pfad.
Shell("C:\Programme\Foxit Software\Foxit Reader\Foxit Reader.exe", 1, "-NoRegister d:\Moritz\\Park Nord\Stunden\Plan Dez 2007\test.pdf -n 1")
(OO 2.3.1, XP)
Vielen Dank
Moritz
Re: shell Leerzeichen
Hallo Moritz
Gruß
Gerd
Könnte es sein, das nicht das Leerzeichen, sondern der doppelte backslash zwischen Moritz und Park die Ursache des nicht Funktionierens ist?moritz hat geschrieben: Shell("C:\Programme\Foxit Software\Foxit Reader\Foxit Reader.exe", 1, "-NoRegister d:\Moritz\\Park Nord\Stunden\Plan Dez 2007\test.pdf -n 1")
Gruß
Gerd
Re: shell Leerzeichen
Nein, der ist nur hier drin, weil ich einen längeren Pfad gekürzt habe.
Moritz
Moritz
Re: shell Leerzeichen
Hey Moritz,
bei auftretenden Leerzeichen sollte man an sich immer die URL-Notation verwenden - dort werden Leerzeichen maskiert (mit %20). Das kannst du auch manuell machen.
Ich würde alles durchprobieren, auch den direkten Aufruf ohne Parameter, also in der Form:
shell(""C:\Programme\Foxit Software\Foxit Reader\Foxit Reader.exe -NoRegister d:\Moritz\\Park Nord\Stunden\Plan Dez 2007\test.pdf -n 1")
Im Übrigen scheint mir der Aufruf an sich schon "merkwürdig. Schalter vor und hinter dem als Pfad übergebene Parameter? Wie soll das Programm das unterscheiden, das mit den Leerzeichen. Der Aufruf funktioniert doch so sicher nicht in der Eingabeaufforderung, also der Shell? Oder?
Auch könntest du den UNO-Shellbefehl (execute() - im Service com.sun.star.system.SystemShellExecute - ausprobieren - der ist eigentlich immer vorzuziehen
Viele Grüße
Thomas
bei auftretenden Leerzeichen sollte man an sich immer die URL-Notation verwenden - dort werden Leerzeichen maskiert (mit %20). Das kannst du auch manuell machen.
Ich würde alles durchprobieren, auch den direkten Aufruf ohne Parameter, also in der Form:
shell(""C:\Programme\Foxit Software\Foxit Reader\Foxit Reader.exe -NoRegister d:\Moritz\\Park Nord\Stunden\Plan Dez 2007\test.pdf -n 1")
Im Übrigen scheint mir der Aufruf an sich schon "merkwürdig. Schalter vor und hinter dem als Pfad übergebene Parameter? Wie soll das Programm das unterscheiden, das mit den Leerzeichen. Der Aufruf funktioniert doch so sicher nicht in der Eingabeaufforderung, also der Shell? Oder?
Auch könntest du den UNO-Shellbefehl (execute() - im Service com.sun.star.system.SystemShellExecute - ausprobieren - der ist eigentlich immer vorzuziehen

Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: shell Leerzeichen
Warum?Toxitom hat geschrieben:Auch könntest du den UNO-Shellbefehl (execute() - im Service com.sun.star.system.SystemShellExecute - ausprobieren - der ist eigentlich immer vorzuziehen
Ich würde die Laufzeitfunktion shell() vorziehen -wenn sie bei der Aufgabe funktioniert.
Die Aufbereitung der UNO-Funktion benötigt doch mehr Aufwand und Laufzeit-Ressourcen, oder?
[immer noch im Urlaub, grüssend aus Koh Kho Khao, Thailand: aktuell 28°C :-> ]
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: shell Leerzeichen
Hey Winfried,
Die Uno-Funktion hingegen ist flexibler (du brauchst beispielsweise nicht den korrekten Pfad des Programms zu wissen, wenn der Mime-Type im System registirert ist) , universeller (da auch in anderen Sprachen einsetzbar) und wird eher weitergepflegt. Die Basic-Funktionen nicht mehr.
Und wenn man programmiert, kann man sich doch gleich an die UNO Funktionen und ihre Erzeugung/Benutzung gewöhnen, oder nicht
Viele Grüße
Thomas
PS: der Dich natürlich beneidet - hier bei Regen und 3°C ...
Das ist korrekt - und wenn man nur unter Basic programmiert gebe ich dir auch recht.komma4 hat geschrieben:Die Aufbereitung der UNO-Funktion benötigt doch mehr Aufwand und Laufzeit-Ressourcen, oder?
Die Uno-Funktion hingegen ist flexibler (du brauchst beispielsweise nicht den korrekten Pfad des Programms zu wissen, wenn der Mime-Type im System registirert ist) , universeller (da auch in anderen Sprachen einsetzbar) und wird eher weitergepflegt. Die Basic-Funktionen nicht mehr.
Und wenn man programmiert, kann man sich doch gleich an die UNO Funktionen und ihre Erzeugung/Benutzung gewöhnen, oder nicht

Viele Grüße
Thomas
PS: der Dich natürlich beneidet - hier bei Regen und 3°C ...
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Re: shell Leerzeichen
Hallo Toxitom,
siw Einfügung von %20 hab ich bereits ohne Erfolgt versucht, auch alles ohne Parameter. Der Befehlsaufruf funktioniert auf der Konsole, dort allerdings mit dem Zusatz von "", was eben in Starbasic so nicht möglich ist
So sieht der korrekte Aufruf das im Dos- Fenster aus.
"C:\Programme\Foxit Software\Foxit Reader\Foxit Reader.exe" -NoRegister "d:\Moritz\Park Nord\Stunden\Plan Dez 2007\test.pdf" -n 1
Und in Starbasic funktioniert das Ganze ohne "" auch, aber natürlich nur bei Pfaden ohne Leerzeichen.
Den UNO-Shellbefehl hab ich noch nicht ausprobiert.
Danke
Moritz
siw Einfügung von %20 hab ich bereits ohne Erfolgt versucht, auch alles ohne Parameter. Der Befehlsaufruf funktioniert auf der Konsole, dort allerdings mit dem Zusatz von "", was eben in Starbasic so nicht möglich ist
So sieht der korrekte Aufruf das im Dos- Fenster aus.
"C:\Programme\Foxit Software\Foxit Reader\Foxit Reader.exe" -NoRegister "d:\Moritz\Park Nord\Stunden\Plan Dez 2007\test.pdf" -n 1
Und in Starbasic funktioniert das Ganze ohne "" auch, aber natürlich nur bei Pfaden ohne Leerzeichen.
Den UNO-Shellbefehl hab ich noch nicht ausprobiert.
Danke
Moritz
Re: shell Leerzeichen
versuche doch den Parameter als Inhalt einer String-Variable zu übergeben.was eben in Starbasic so nicht möglich ist
Gruß
Stephan
Re: shell Leerzeichen
Hab ich auch schon versucht.
So dunkel hab ich in Erinnerung, daß man "-Zeichen auch in Strings übergeben kann. Ich weiß aber nicht mehr, ob das in Starbasic möglich ist.
Moritz
So dunkel hab ich in Erinnerung, daß man "-Zeichen auch in Strings übergeben kann. Ich weiß aber nicht mehr, ob das in Starbasic möglich ist.
Moritz
gelöst
Ich wusste doch, das das gehen muß.
chr$(34) ist die Lösung. So werden die Anführungsstriche zwar in Zeichen konvertiert, aber vom Interpreter nicht ausgewertet.
sdateiname =chr$(34) & "d:\Moritz\Park Nord\Stunden\Plan Dez 2007\test.pdf" & chr$(34)
Shell("C:\Programme\Foxit Software\Foxit Reader\Foxit Reader.exe", 1, " -NoRegister " & sDateiname & " -n 1")
Moritz
chr$(34) ist die Lösung. So werden die Anführungsstriche zwar in Zeichen konvertiert, aber vom Interpreter nicht ausgewertet.
sdateiname =chr$(34) & "d:\Moritz\Park Nord\Stunden\Plan Dez 2007\test.pdf" & chr$(34)
Shell("C:\Programme\Foxit Software\Foxit Reader\Foxit Reader.exe", 1, " -NoRegister " & sDateiname & " -n 1")
Moritz
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: shell Leerzeichen
geht ('einfach' zweimal schreiben):
Viel Erfolg!
Code: Alles auswählen
sSQL = " UPDATE ""tabelle"" SET ""gedruckt"" = " & now()
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)