PowerShell:查找确切的文件夹名称

标签 powershell directory match exact-match

我试图找到一种方法来返回给定文件夹的完整路径。问题是如果有一个类似的命名文件夹,我的代码会返回多个文件夹。例如搜索“Program Files”,返回“Program Files”和“Programs Files (x86) ”。由于我没有要求 "Program Files (x86) ,我不希望它返回它。我正在使用:

$folderName = "Program Files"
(gci C:\ -Recurse | ?{$_.Name -match [regex]::Escape($folderName)}).FullName

我想用 -eq 替换 -match,但它会在比较整个路径时返回 $false。

我想过可能会返回所有匹配项,然后要求用户选择正确的匹配项,或者创建一个数组,将路径拆分并在每个文件夹名称上执行 -eq,然后再次加入路径,但我的技能不足在阵列部门,无法让它工作。

任何帮助或指示将不胜感激。

谢谢

感谢 Frode,这是我使用过的:
$path = gci -Path "$drive\" -Filter $PartialPath -Recurse -ErrorAction SilentlyContinue #| ?{$_.PSPath -match [regex]::Escape($PartialPath)} 

($path.FullName | gci -Filter $filename -Recurse -ErrorAction SilentlyContinue).FullName

最佳答案

-match就像要求*Program Files* .您应该使用 -Filter Get-ChildItem 的参数对于这样的事情。它要快得多,并且不需要正则表达式转义等。

PowerShell 3:

$folderName = "Program Files"
(gci -path C:\ -filter $foldername -Recurse).FullName

PowerShell 2:
$folderName = "Program Files"
gci -path C:\ -filter $foldername -Recurse | Select-Object -Expand FullName

另外,你不应该使用 -Recurse如果你不需要它(就像在这个例子中一样)。

关于PowerShell:查找确切的文件夹名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22127239/

相关文章:

powershell - 如何在 TeamCity PowerShell 运行程序中传播错误

powershell - 设置位置 Powershell 提供程序

php - 在大写字母前加下划线

azure - 如何获取Azure容器文件列表?

objective-c - 在 NSDocumentDirectory 中创建子文件夹

windows - 在 Windows 中查找文件夹的实际大小

Java虚拟文件系统应用

在 char* 数组中查找 char* 类型的 c++ 程序

javascript - CSS 'translate(0px, 0px)' 元素样式的正则表达式匹配值

xml - 创建新节点<xi:include>