Agrupar arquivos por partes do nome do arquivo e copiá-los

1

Estou tentando encontrar uma maneira de agrupar arquivos para facilitar a cópia. O requisito é que eu tenha nomes de arquivos como:

aa0048.pdf e fg345_aa0048_somethingsomething.xml. Existem 25000 arquivos na pasta e a correspondência entre pares é que a parte do nome é igual. Neste exemplo aa0048 .

Eu tentei agrupar e filtrar no Windows Explorer, mas não deu bons resultados. Existe outra ferramenta que pode fazer isso para mim ou algum script do PowerShell / cmd para fazer essas combinações e mover os primeiros 100 pares para outra pasta?

O motivo é que eu preciso processar os casais mais tarde com um programa em lote, mas quero fazê-lo em pedaços de 100 em vez de todos os 25.000 arquivos ao mesmo tempo em que isso sobrecarregará o sistema para o qual estou processando.

    
por Kris van der Mast 18.08.2015 / 07:53

1 resposta

0

Este script irá mover 100 arquivos (50 pares).

Defina $sourceDir e $destDir conforme apropriado. Remova o -WhatIf somente se você estiver satisfeito, ele fará o que quiser (até que ele realmente não mova nada; ele apenas lhe dirá o que ele moveria).

Suponho que o padrão a ser pesquisado seja dois caracteres alfanuméricos e, em seguida, quatro dígitos ('\ w {2} \ d {4}'). Você pode apertar isso se você precisar.

$sourceDir = "."
$destDir = "DestDir"
Get-ChildItem $sourceDir | 
    Group-Object -Property { $_ -match '\w{2}\d{4}'; $Matches[0] } | 
    Select-Object -First 100 -ExpandProperty Group | 
    Move-Item -WhatIf -Destination $destDir
    
por 19.08.2015 / 06:25