Removendo Arquivos Duplicados Com o Powershell

0

Powershell Foi enviado desde o Windows Vista. Eu tenho muitos clientes que baixam arquivos, esquecem onde eles acabam fazendo o download do mesmo arquivo. Esses arquivos, se forem duplicados, são anexados com um número. ie ... arquivo (1) arquivo (2) dependendo de quantas vezes eles fizeram o download do arquivo novamente.

Como faço para remover essas duplicatas com o powershell?

    
por Scandalist 25.01.2014 / 07:14

2 respostas

0

Em vez de depender do nome do arquivo, eu executaria e armazenaria a soma MD5 de cada arquivo e excluiria quando uma duplicata fosse detectada dessa maneira, para que versões mais recentes de um arquivo não sejam descartadas.

link

    
por 25.01.2014 / 17:10
0

A implementação depende de como você lida com uma duplicata.
Aqui eu assumi que a última cópia acessada seria a mais valiosa para os usuários. Para fins de limpeza, removerei "()" do nome de arquivo da cópia eleita. Eu não testei realmente, então, por favor, tente com cuidado.

    $files = gci c:\users\*\Downloads -include "* (*).*" -Recurse | Where-Object {$_.name -match "^.*\ \([1-9][0-9]*\)\..*$"}
    foreach ($file in $files) {

        $fileOrgFullName = $file.Directory.FullName + "\" + ($file.BaseName -replace " \([1-9][0-9]*\)$", "") + $file.Extension
        if (test-path $fileOrgFullName) {

            $fileOrg = gi $fileOrgFullName
            if ($file.LastAccessTime -gt $fileOrg.LastAccessTime) {

                cp $file.FullName $fileOrg.FullName
            } 
            rm $file.fullName
        } else {

            ren $file.FullName $fileOrgFullName
        }
    }     
    
por 25.01.2014 / 18:58