Powershell: Dir / s - remover pastas repetidas

1

Situação:

Em Powershell, estou usando:

$folders = dir -s  C:\Users\Name\Downloads\*.ttf | Select Directory
foreach ($folder in $folders)
{
    echo $folder
}

Para exibir pastas cujo conteúdo contenha certas extensões de arquivos (neste exemplo, arquivos .ttf).

Como as pastas têm mais de um arquivo do tipo .ttf, as duplicatas aparecem na lista final. Isso não é útil para mim porque gostaria de mover os diretórios listados para algum outro lugar.

Minha pergunta:

Como posso remover essas duplicatas da lista ecoada?

    
por Synthetic Ascension 11.07.2015 / 23:13

2 respostas

1

Ok, acredito que resolvi isso.

Eu usei a opção -Unique em Select para filtrar resultados repetidos.

Dar o código final de:

$folders = dir -s C:\Users\Name\Downloads\*.ttf | Select Directory -Unique
foreach ($folder in $folders)
{
    echo $folder
}

Uma solução simples, mas eu não usei o PowerShell no script antes, então não estava ciente desse recurso específico:)

    
por 12.07.2015 / 14:06
0

Você pode usar Contains para verificar ao carregar cada item em uma lista ou "NotContains"

Você pode tentar isso para entender os seguintes contornos:

$room = @("desk","Lamp","chair","pens","Paper")
$room -Contains "Lamp"
$room -notContains "Whale Bladder"

Uma aproximação fácil (fora da minha cabeça e não testada) para o que você quer seria algo como:

$FoundFiles = @()
$FolderList | Foreach-Object {
   Get-ChildItems $_ | foreach-Object {if ($FoundFiles -NotContains  $_.Name){
    $FoundFiles += $_
      }
    }
}
    
por 12.07.2015 / 00:00