Powershell 中的标准化文件路径比较

问题描述 投票:0回答:2

假设我有以下两条路径(都有效,比如说):

$p1 = "D:\folder1\"
$p2 = "D:\Folder1"

我想比较这两条路径是否相等。我希望两条路径相同。我尝试了以下两个命令:

  • (Resolve-Path $p1) -eq (Resolve-Path $p2)
  • (
    Get-Item $p1) -eq (Get-Item $p2)

None 返回

$True
因为反斜杠没有标准化。现在我知道我可以做一些正则表达式魔术并让它工作但我正在寻找的是一个用于比较文件路径的内置解决方案。

powershell path equality
2个回答
6
投票
join-path "C:\Windows" ""
join-path "C:\Windows\" ""

两者都返回“C:\Windows\”,因为连接路径规范化了它们。


0
投票

假设

folder1
的文件夹存在于
D:\
的根目录中,这:

Set-Location -Path 'D:\'
"\\$([Environment]::MachineName)\D$\folder1",
"\\$([Environment]::MachineName)\D$\folder1\",
'D:\folder1\',
  '\folder1\',
   'folder1\',
'D:\folder1' ,
  '\folder1' ,
   'folder1' | ForEach-Object {
    Join-Path (Resolve-Path $_).ProviderPath ''
}

返回这个:

\\<ComputerName>\D$\folder1\
\\<ComputerName>\D$\folder1\
D:\folder1\
D:\folder1\
D:\folder1\
D:\folder1\
D:\folder1\
D:\folder1\
© www.soinside.com 2019 - 2024. All rights reserved.