![]() |
Pfad richtig Escapen
Hallo,
ich möchte gerne per ShellExecute einen Datei mit parametern ausführen.
Delphi-Quellcode:
Fehlermeldung:
var
parameter: PWideChar; begin parameter := PWideChar('/K ^"%ProgramFiles(x86)%\PostgreSQL\9.1\bin\createuser^" -s -U postgres test'); ShellExecute(0, nil,'cmd.exe',parameter ,nil,SW_SHOW);
Code:
Was mach ich hier falsch? Wie Escape ich richtig?
Der Befehl ""C:\Program" ist entweder falsch geschrieben oder
konnte nicht gefunden werden. Gruß pustekuchen |
AW: Pfad richtig Escapen
Ich glaube nicht, dass Shellexecute die Umgebungsvariable auflösen kann.
|
AW: Pfad richtig Escapen
Soll es ja auch nicht. Das soll ja die cmd.exe dann machen, was sie ja anscheinend auch tut.
Auch wird das erste ^" richtig convertiert. Jedoch scheint das zweite " zu fehlen.. Zitat:
|
AW: Pfad richtig Escapen
Zitat:
Delphi-Quellcode:
erwähnt werden.
cmd /?
Aber so ganz durchgesehn hab ich da auch noch nicht. Zitat:
Delphi-Quellcode:
wurde zu
%ProgramFiles(x86)%\
Delphi-Quellcode:
. :wink:
C:\Program...
|
AW: Pfad richtig Escapen
In der Hilfe der cmd konnte ich zum escaping nichts finden. Lediglich zum /K parameter:
Code:
Und diese Bedingungen erfülle ich ja.
Wird /C oder /K angegeben, wird der Rest der Befehlszeile nach der Option als
Befehlszeile verarbeitet, wobei folgende Logik zur Verarbeitung des doppelten Anführungszeichens (") gilt: 1. Sind alle folgenden Bedingungen erfüllt, wird ein doppeltes Anführungszeichen auf der Befehlszeile beibehalten: - keine Option "/S" - genau zwei doppelte Anführungszeichen - keines der folgenden Zeichen zwischen den doppelten Anführungszeichen: &<>()@^| - es ist mindestens ein Leerzeichen zwischen den doppelten Anführungszeichen - die Zeichenfolge zwischen den doppelten Anführungszeichen ist der Name einer ausführbaren Datei 2. Ist dies nicht der Fall, wird bei einem doppelten Anführungszeichen als erstem Zeichen sowohl dieses, als auch das letzte doppelte Anführungszeichen entfernt (und der Rest der Befehlszeile bei- behalten). |
AW: Pfad richtig Escapen
Zitat:
|
AW: Pfad richtig Escapen
Dann müsste es ja mit dieser Zeile klappen:
Delphi-Quellcode:
Dort ist nun ein Leerzeichen vorhanden. Jedoch erscheint der gleiche Fehler.
parameter := PWideChar('/K ^"C:\Program Files (x86)\PostgreSQL\9.1\bin\createuser^" -s -U postgres test');
|
AW: Pfad richtig Escapen
Wozu dienen denn die "^"?
|
AW: Pfad richtig Escapen
|
AW: Pfad richtig Escapen
Da steht aber nichts davon, dass man Anführungszeichen escapen soll. Lass die ^ doch mal testhalber weg.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz