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?

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
        }
    }     
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.