function Delete-Items($List, [string]$ListName){
$DoNotDelete = @("acct.csv","jpd.csv","jss.pdf","jman.pdf","3600.pdf","cont.pdf","msl.txt","pres.pdf","tray.pdf","qual.pdf","zipl.pdf")
$List = $List | %{
"*$_*"
}
Get-ChildItem C:\TEST\56381643\ -Recurse -Include $List -Directory | %{
Get-ChildItem $_.FullName -Exclude $DoNotDelete -Recurse | %{
echo "DELETE $ListName $($_.name | select-string -pattern "\d{12}")"
Remove-Item -Path $_.FullName -WhatIf
}
}
}
#Example Usage
$JobList = @(
098765432109
123456789012
)
$SubmitList = @(
234567890123
)
Delete-Items -List $JobList -ListName JOBID
Delete-Items -List $SubmitList -ListName SUBMID
Давайте рассмотрим краткое изложение того, что происходит в функции.
У нас есть массив файлов, которые нельзя удалить
Мы превращаем числа $list
в символы подстановки, добавляя *
до и после каждого элемента в массиве.Затем мы ищем только те каталоги, которые содержат эти номера.
Затем мы используем другой Get-ChildItem to get the files in each directory but exclude the ones mentioned in
$ DoNotDelete`.
Если вы хотите удалить файлы, удалите -Whatif
на remove-item