web-dev-qa-db-fra.com

Comment gérer le caractère barre oblique inverse dans les opérations de chaîne de remplacement PowerShell?

J'utilise -replace pour changer un chemin d'accès de la source à la destination. Cependant, je ne sais pas comment gérer le caractère \. Par exemple:

$source = "\\somedir"
$dest = "\\anotherdir"

$test = "\\somedir\somefile"

$destfile = $test -replace $source, $dest

Après cette opération, $ destfile est défini sur

"\\\anotherdir\somefile"

Quelle est la bonne façon de procéder pour éviter la triple barre oblique inverse dans le résultat?

11
user175562

Essayez ce qui suit:

$source = "\\\\somedir"

Vous ne faisiez correspondre qu'une seule barre oblique inverse lors du remplacement, ce qui vous a donné les trois \\\ au début de votre chemin.

La barre oblique inverse est un caractère d'échappement regex, donc \\ sera considéré comme correspondant à un seul \ et pas deux \\. Comme la première barre oblique inverse est le caractère d'échappement et n'est pas utilisé pour correspondre.

Vous pouvez également gérer les barres obliques inverses en utilisant la fonction d'échappement regex.

$source = [regex]::escape('\\somedir')
17
Richard