在 PowerShell 中使用正则表达式将路径中的两个 (//) 替换为一个 (/)

ARa*_*lim -1 regex powershell

我已将两条路径组合在一起,但是,我需要将整个路径中的双斜杠替换为一个。

$path1 = 'C:\NewFolder\'
$path2 = '\Samplefolder\files'
$final = $path1 + $path2
Run Code Online (Sandbox Code Playgroud)

结果显示为:C:\NewFolder\\Samplefolder\files,使其成为无效路径。我想将这两个斜杠替换为一个,并且需要它,以便\\路径中只要有两个斜杠,它们就只替换为一个\

我试过做

$final = [regex]::replace($final,"\\\\","\\")
Run Code Online (Sandbox Code Playgroud)

$final = $final.replace('\\\\+', '\\')
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

Adm*_*ngs 8

在 PowerShell 中连接路径的惯用方法是使用Join-Path

$path1 = 'C:\NewFolder\'
$path2 = '\Samplefolder\files'
$final = Join-Path $path1 $path2
Run Code Online (Sandbox Code Playgroud)

PowerShell 的-replace运算符使用正则表达式匹配。您必须使用反斜杠转义特殊\字符。

$path1 = 'C:\NewFolder\'
$path2 = '\Samplefolder\files'
$final = $path1 + $path2 -replace '\\\\','\'
Run Code Online (Sandbox Code Playgroud)

您可以选择 String 类Replace()方法,它执行文字字符串和字符搜索。

$path1 = 'C:\NewFolder\'
$path2 = '\Samplefolder\files'
$final = ($path1 + $path2).Replace('\\','\')
Run Code Online (Sandbox Code Playgroud)