Seite 1 von 1
shell Leerzeichen
Verfasst: Di, 08.01.2008 13:52
von moritz
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
Re: shell Leerzeichen
Verfasst: Mi, 09.01.2008 08:40
von gschuckar
Hallo Moritz
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")
Könnte es sein, das nicht das Leerzeichen, sondern der doppelte backslash zwischen Moritz und Park die Ursache des nicht Funktionierens ist?
Gruß
Gerd
Re: shell Leerzeichen
Verfasst: Mi, 09.01.2008 13:22
von moritz
Nein, der ist nur hier drin, weil ich einen längeren Pfad gekürzt habe.
Moritz
Re: shell Leerzeichen
Verfasst: Mi, 09.01.2008 13:40
von Toxitom
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
Re: shell Leerzeichen
Verfasst: Mi, 09.01.2008 16:27
von komma4
Toxitom hat geschrieben:Auch könntest du den UNO-Shellbefehl (execute() - im Service com.sun.star.system.SystemShellExecute - ausprobieren - der ist eigentlich immer vorzuziehen

Warum?
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 :-> ]
Re: shell Leerzeichen
Verfasst: Do, 10.01.2008 09:09
von Toxitom
Hey Winfried,
komma4 hat geschrieben:Die Aufbereitung der UNO-Funktion benötigt doch mehr Aufwand und Laufzeit-Ressourcen, oder?
Das ist korrekt - und wenn man nur unter Basic programmiert gebe ich dir auch recht.
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 ...
Re: shell Leerzeichen
Verfasst: Fr, 11.01.2008 15:06
von moritz
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
Re: shell Leerzeichen
Verfasst: Fr, 11.01.2008 16:58
von Stephan
was eben in Starbasic so nicht möglich ist
versuche doch den Parameter als Inhalt einer String-Variable zu übergeben.
Gruß
Stephan
Re: shell Leerzeichen
Verfasst: Sa, 12.01.2008 10:26
von moritz
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
gelöst
Verfasst: Sa, 12.01.2008 10:42
von moritz
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
Re: shell Leerzeichen
Verfasst: Sa, 12.01.2008 10:45
von komma4
geht ('einfach' zweimal schreiben):
Code: Alles auswählen
sSQL = " UPDATE ""tabelle"" SET ""gedruckt"" = " & now()
Viel Erfolg!