获取PowerShell中包含.md5对应项的所有文件的列表

时间:2012-03-13 19:58:15

标签: powershell

我正在编写一个PowerShell脚本,我需要在其中获取具有互补.md5文件的文件列表。例如,如果我有一个文件名abc.txt,我只想在同一目录中存在名为abc.txt.md5的文件时将其添加到列表中。

这是我的尝试,但它不起作用。我不确定为什么?

$DirectoryToScan = ".\SomePath"
$Files = Get-ChildItem $DirectoryToScan -Recurse |
    Where-Object { !$_.PSIsContainer } |
    Where-Object { $_.Name -notmatch ".*\.md5" } |
    Where-Object { Test-Path "$($_.FullName).md5" }

没有最后一个Where-Object子句,它可以正常工作。

3 个答案:

答案 0 :(得分:2)

你给的东西对我有用,但你可以尝试做这样的事情:

gci $DirectoryToScan -recurse -exclude "*.md5" | ?{ -not $_.PsIsContainer } | 
      ?{ test-path ($_.fullname + ".md5") } 

答案 1 :(得分:1)

我认为这应该可行,并且保存您再次访问测试路径的目录。

$DirectoryToScan = ".\SomePath"
$temp = Get-Childitem $DirectoryToScan -recurse | select -expand fullname 
$files = $temp |
foreach  {if ($_ -notmatch '\.md5$' -and $temp -contains "$_.md5"){$_}}

答案 2 :(得分:1)

Get-ChildItem $DirectoryToScan -Recurse | `
  Where-Object { !$_.PSIsContainer -and (Test-Path "$($_.FullName).md5" -PathType Leaf)}