Удалить родительскую папку с пустой указанной папкой c - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть несколько родительских папок с определенной структурой подпапок:

  • C: \ parent1 \ Sub1
  • C: \ parent1 \ Sub2
  • C: \ parent1 \ ...
  • C: \ parent2 \ Sub1
  • C: \ parent2 \ Sub2
  • C: \ parent2 \ ...

Мне нужно удалить все родительские папки, в которых подпапка с именем 'Sub2' пуста.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

Если вы находитесь в папке root:

Get-ChildItem -Filter Sub* -Recurse | ? {((Get-ChildItem -Path $_.FullName).Count -eq 0) -and $_.Name -eq 'Sub2'} | % {Remove-Item $_.Parent -Recurse} 
0 голосов
/ 25 февраля 2020

Этот код сделает именно это. Переменная $ path содержит местоположение, где родительские папки

$path = 'C:\'
$parentfolders = Get-Childitem $path -Directory 
foreach ($parentfolder in $parentfolders){
    foreach ($childfolder in (Get-Childitem $($parentfolder.FullName) -Directory )){
        if ($childfolder.Name -eq "Sub2"){
            if((Get-Childitem $($childfolder.FullName) | Measure-Object).Count -ne 0){
                Remove-Item -Path $($parentfolder.FullName) -Force -Recurse
            }
        }
    }
}

Редактировать: Я объединил свой ответ с ответом от Дейва Секстона

$path = 'C:\'
    $parentfolders = Get-Childitem $path 
    foreach ($parentfolder in $parentfolders){
        Get-ChildItem -Filter Sub* -Recurse | ? {(Get-ChildItem -Path $_.FullName).Count -eq 0} | % {Remove-Item $_.Parent -Recurse} 

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...