我正在编写一个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
子句,它可以正常工作。
答案 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)}