Wie behandeln backslash-Zeichen in der PowerShell -ersetzen von Zeichenketten-Operationen?
Ich bin mit -ersetzen zu ändern einen Pfad von der Quelle zum Ziel. Aber ich bin nicht sicher, wie man mit den \ - Zeichen. Zum Beispiel:
$source = "\\somedir"
$dest = "\\anotherdir"
$test = "\\somedir\somefile"
$destfile = $test -replace $source, $dest
Nach dieser operation, $destfile eingestellt ist
"\\\anotherdir\somefile"
Was ist der richtige Weg, dies zu tun, um zu vermeiden, die triple backslash im Ergebnis?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie Folgendes:
Waren Sie immer nur passende, 1 backslash, wenn zu ersetzen, die gab Ihnen die drei
\\\
am Anfang eines Weges.Der backslash ist ein
regex
escape-Zeichen, damit\\
werden, entsprechen nur einem\
und nicht zwei\\
. Als der erste backslash ist der escape-Zeichen und nicht verwendet werden, zu entsprechen.Andere Weise, die Sie behandeln können, die umgekehrte Schrägstriche zu verwenden ist die
regex
escape-Funktion.[regex]::Escape()
ist die sicherere Lösung, weil es mit anderen Sonderzeichen (wie+
oder Klammern) als gut.[regex]::Escape()
funktioniert nicht wie erwartet für die Pfade mit '.'