2 Stimmen

Abrufen einer Liste aller Dateien mit .md5-Gegenstücken in PowerShell

Ich schreibe ein PowerShell-Skript, in dem ich eine Liste von Dateien abrufen muss, die ergänzende .md5-Dateien haben. Zum Beispiel, wenn ich einen Dateinamen habe abc.txt Ich möchte sie nur in die Liste aufnehmen, wenn es eine Datei mit dem Namen abc.txt.md5 in demselben Verzeichnis.

Das ist mein Versuch, aber es funktioniert nicht. Ich bin mir nicht sicher, warum?

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

Es funktioniert auch ohne den letzten Where-Object Klausel.

2voto

manojlds Punkte 273771

Was Sie angegeben haben, funktioniert bei mir, aber Sie können auch so etwas versuchen:

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

1voto

mjolinor Punkte 63365

Ich denke, das sollte funktionieren und erspart Ihnen das erneute Anklicken des Verzeichnisses für den Testpfad.

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

1voto

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X