Tenho uma pasta cheia de arquivos .wav que gostaria de copiar em subpastas chamadas "Tamanho Único" e "Tamanho Não Único". Cerca de metade dos arquivos tem o mesmo tamanho até o byte:
Get-ChildItem "*.wav" | Group-Object -Property Length -NoElement | Sort-Object Count -Descending
Count Name Group (Example)
----- ---- ----
6 26244078 {file206.wav, file137.wav, file 101.wav, etc.}
5 28716602
5 28807758
5 30750266
...
1 17773794 {file31.wav}
1 18144078
1 18432082
1 70589446
Gostaria que eles fossem copiados para "Tamanho Único" se Contagem de Grupo = 1 e "Tamanho Não Único" caso contrário, mas sou bastante inexperiente com powershell e CLI em geral e não tenho muita certeza do que fazer com a saída do comando neste momento. Tentei algumas pesquisas online, mas minhas palavras-chave não parecem estar me levando a lugar nenhum para esse problema bastante único. Qualquer ajuda é apreciada, obrigado!
O que você precisa é percorrer os grupos e, dependendo de suas
.Count
propriedades, copiar os arquivos para ouUnique Size
para asNon-Unique Size
pastas.Aqui está uma solução simples:
Também é possível fazer isso como uma linha única, tornando o destino do movimento condicional em
Count -eq 0
, mas seria necessário aninhamentoForEach-Object
para fazer referência a ele.Certifique-se de que as pastas de destino já existam, caso contrário o arquivo
example.wav
será copiado comoUnique
em vez deUnique/example.wav
.