Я искал повсюду, но ничего, кажется, делать именно то, что мне нужно ..Powershell: Рекурсивный удалить, но исключить непустые папки с определенным именем
У меня есть структура папок, как это:
- C: \ Test \ Job1 \ вложения \
- C: \ Test \ Job2 \ вложения \
- C: \ Test \ Job3 \ вложения \
I 'd хотел бы удалить все файлы и папки в C: \ Test (но не сам C: \ Test) , если их папки вложений пусты. Непустые вложенные каталоги должны быть оставлены в покое. Все остальные файлы и папки должны быть удалены.
Итак, если единственным файлом в указанных выше путях был C: \ Test \ Job2 \ attachments \ test.txt, единственными папками, оставленными после моего скрипта, были C: \ Test \ Job2 \ attachments. Каталоги Job1 и Job3 будут удалены.
Чтобы получить мяч прокатки, я попытался это для того, чтобы удалить все, кроме папки вложений:
$TargetFolder = "C:\Test\*" get-childitem $TargetFolder -exclude attachments* -recurse | remove-item -WhatIf
... но, кажется, полностью игнорировать -exclude flag
Это работает, но это дает мне подсказки, что мне нужно будет сказать «нет» для него работа право:
Get-ChildItem -Path $TargetFolder -Recurse | Select -ExpandProperty FullName | Where {$_ -notlike $TargetFolder + "*\attachments\*.*"} | sort length -Descending | Remove-Item -Force
... это было бы здорово, если бы было что-то противоположное -Force