带通配符的Powershell -LiteralPath(字面路径)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带通配符的Powershell -LiteralPath(字面路径)相关的知识,希望对你有一定的参考价值。
由于文件名有方括号,我需要使用 -LiteralPath
. 然而,通过这样做,我失去了在我的代码中使用通配符(包括任何文件扩展名)的能力。
$files = Get-ChildItem -Recurse -LiteralPath "$somepath"
foreach ($f in $files)
Test-Path -LiteralPath "$somepath\$($f.BaseName).*" -PathType Leaf
答案
试试下面的方法。
Test-Path 'file1 ``[123].*'
foreach ($f in $files)
$path = "$somepath\$($f.BaseName).*".Replace('[', '``[')
Test-Path -Path $path -PathType Leaf
另一答案
不使用"$somepath/$($f.BaseName).*",你可以直接使用$files变量本身的文件系统对象的完整路径,即 $files.FullName 我希望下面的代码对你有用:)
$files = Get-ChildItem -Recurse -LiteralPath "$somepath"
$files | ForEach-Object Test-Path -LiteralPath $_.FullName -PathType Leaf
另一答案
你已经很接近了,只需在-Filter参数中加入通配符部分,并删除-PathType。
$files = Get-ChildItem -Recurse -LiteralPath "$somepath"
foreach ($f in $files)
Test-Path -LiteralPath "$somepath" -Filter "$($_.BaseName).*"
但你可以像这样使用-Path。
-Path `"$somepath\$($_.basename).*`"
以上是关于带通配符的Powershell -LiteralPath(字面路径)的主要内容,如果未能解决你的问题,请参考以下文章
powershell 的NuGet通配符,update.ps1