Supprimer des fichiers en double avec Powershell

0

Powershell A été expédié en stock depuis Windows Vista. J'ai beaucoup de clients qui téléchargent des fichiers, oublient où ils finissent par télécharger à nouveau le même fichier. S'ils sont en double, ces fichiers sont accompagnés d'un numéro. c'est-à-dire ... fichier (1) fichier (2) en fonction du nombre de fois qu'ils ont téléchargé à nouveau le fichier.

Comment puis-je supprimer ces doublons avec Powershell?

Scandalist
la source

Réponses:

0

L'implémentation dépend de la façon dont vous gérez un doublon.
Ici, j'ai supposé que la dernière copie consultée serait la plus précieuse pour les utilisateurs. Pour des raisons de maintenance, je supprimerais "()" du nom de fichier de la copie choisie. Je ne l'ai pas vraiment testé, essayez-le avec précaution.

    $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
        }
    }     
chingNotCHing
la source