WSH - Logik der Anfünrungszeichen

cumulonimbus8

Fleet Admiral
Registriert
Apr. 2012
Beiträge
18.394
Hallo!

Ich habe zwar per Google eine Lösung gefunden, aber keinen Grund warum diese funktioniert und eben genau so funktioniert. Der Suchtreffer ist übrigens älter. Stichwort 80070002…

Code:
Option Explicit
Dim WSHShell
Set WSHShell = WSCRIPT.CreateObject("WScript.Shell")
WshShell.Run "C:\Bin\pskill.exe phraseexpress", 2, True
WshShell.Run """C:\Program Files (x86)\PhraseExpress\phraseexpress.exe""", 2, True
Wieso genügt der ersten EXE (aus SysInternals bekannt) das einzelne Anführungszeichen und warum muss es für die zweite verdreifacht werden?
Ein " das in "" stehen muss um zu existieren? Entwertung? Dazu widersprechen sich die Zeilen zu eindeutig.

CN8
 
Sicher?

Mir ist ist diesen Leerzeichen-im-Pfad-Dilemma schon klar.
Aber nach primitiver Logik müsste eine Konstruktion mit einem " genügen, oder anders gesagt, wie logisch wären denn solche Verteilungen wie diese:
"L:\Leer im Pfad\Prog.Exe"
""L:\Leer im Pfad\Prog.Exe" /Parameter Objekt"
"L:\Leer im Pfad\Prog.Exe"" /Parameter Objekt"
""L:\Leer im Pfad\Prog.Exe"" ""/Parameter"" "Objekt" • ""L:\Leer im Pfad\Prog.Exe"" ""/Parameter"" "Objekt"


Was genau in diesem """ bewirkt denn da nun jedes Einzelne, und wo ist die Logik alles so zu kapseln bzw. wo würde die Verteilung bei den etwas wilden Beispielen mit Leer-im-Pfad, Parameter und Objekt hingehören - wenn nicht auch dann diese Verdreifachung hilft?

CN8
 
Das ist stink normales Escaping.

In "jeder" C-artigen Sprache (C/C++/Java/PHP/...):
Code:
"das ist ein \"test mit leerzeichen\" und so."
In C# auch so:
Code:
@"das ist ein
mehrzeiliger ""test mit leerzeichen""
und so."
In PowerShell:
Code:
"das ist ein `"test mit leerzeichen`" und so."

Welche Verdreifachung meinst du? Dein letztes Beispiel löst in
Code:
"L:\Leer im Pfad\Prog.Exe" "/Parameter" "Objekt" • "L:\Leer im Pfad\Prog.Exe" "/Parameter" "Objekt"
auf.

Übrigens kann der WSH mehrere Programmiersprachen: http://en.wikipedia.org/wiki/Windows_Script_Host#Available_scripting_engines Du nutzt hierbei standardmäßig VB und wenn ich mir das Quoting von Anführungszeichen ansehe, sind es doppelte Anführungszeichen.
 
Zuletzt bearbeitet:
Zurück
Oben