Ich habe Unterordner und Unterunterordner. In den Unterunterordnern möchte ich alle Unterordner finden, die keine Datei mit dem Namen PKA.dump enthalten. Ist dies in Powershell möglich?
Die Unterordner reichen von Angle1, Angle2 usw. bis Angle24
Die Unterunterordner reichen von 1 eV, 2 eV bis 150 eV.
Ich kann feststellen, wann sie kleiner als eine bestimmte Größe sind:
Get-Childitem -path . -filter "PKA.dump" -recurse | where {$_.Length -le 500}
Aber was, wenn es sie nicht gibt?
Antwort1
Wenn ich Sie richtig verstanden habe, sollte so etwas funktionieren:
gci -Filter *eV -Directory -Recurse |
? { -not (Test-Path "$($_.FullName)\PKA.dump") } |
select FullName
Dadurch wird der vollständige Pfad zu allen Ordnern mit dem Namen *eV angezeigt, die keine PKA.dump-Datei enthalten. Wenn das nicht das ist, was Sie wollten, kann es Ihnen zumindest einige Ideen geben.
(Für zukünftige Referenzzwecke sollten Sie bei Fragen dieser Art Beispieleingaben und erwartete Ausgaben anzeigen.)
Antwort2
Fügen Sie Ihren Pfad zu dem Speicherort Ihres Ordners hinzu, dann sollte es funktionieren.
$path = " "; # ADD YOUR PATH TO FOLDER HERE
$all_loc = Get-ChildItem -Recurse $path -Include "ev*" #Only looks where ev* exists
foreach ($x in $all_loc){ # look through all "ev*" subsubfolders
$z = (Join-Path $x.FullName "PKA.dump") # variable to hold file name to search
$test = Test-Path "$z" -PathType leaf;
if ($test -eq 0){
echo "$x does not contain PKA.dump";
## Uncomment below to create empty PKA.dump file
#New-Item $z -type file
}
}
## uncomment below to pause before closing
#$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")