Powershell中的规范化文件路径比较

qjp7pelc  于 2023-04-21  发布在  Shell
关注(0)|答案(2)|浏览(154)

假设我有以下两条路径(假设两条路径都有效):

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

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

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

None返回$True,因为反斜杠没有规范化。现在我知道我可以做一些正则表达式魔术,使其工作,但我所寻找的是一个内置的解决方案,比较文件路径。

smdnsysy

smdnsysy1#

join-path "C:\Windows" ""
join-path "C:\Windows\" ""

两者都返回“C:\Windows\”,因为join-path将它们规范化。

eiee3dmh

eiee3dmh2#

Join-Path (Resolve-Path $Path).ProviderPath ''

假设在D:\的根目录中存在一个名为folder1的文件夹,则如下所示:

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\

相关问题