У меня есть подпапки и подподпапки. В подпапках я хочу найти все подпапки без файла с именем PKA.dump. Можно ли это сделать в powershell?
Подпапки идут от Angle1, Angle2 и т.д. до Angle24.
Подпапки располагаются в диапазоне от 1 эВ, 2 эВ до 150 эВ.
Я могу определить, когда они меньше определенного размера:
Get-Childitem -path . -filter "PKA.dump" -recurse | where {$_.Length -le 500}
Но что, если их не существует?
решение1
Если я правильно понял, то должно сработать что-то вроде этого:
gci -Filter *eV -Directory -Recurse |
? { -not (Test-Path "$($_.FullName)\PKA.dump") } |
select FullName
Это покажет полный путь ко всем папкам с именем *eV, которые не содержат файл PKA.dump. Если это не то, что вы хотели, то, по крайней мере, это может дать вам некоторые идеи.
(Для дальнейшего использования при ответах на подобные вопросы следует привести примеры входных данных и ожидаемых результатов.)
решение2
Добавьте путь к папке, где находится ваша папка, и все должно заработать.
$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")