Question programme pour lister les fichiers d'un répertorie en doublons dans un Excel.

Plus d'informations
il y a 1 an 3 mois #32879 par tomma
Bonjour à tous, 

Je suis débutant confirmé dans ce langage de programmation. 

Mais je rencontre aujourd'hui un problème. J'ai créé un programme, pour faire la liste des fichiers d'un répertoire qui sont >255 caractères. 

Mais je souhaiterais le modifier pour qu'à présent, il me donne la liste dans un fichier Excel des fichiers qui sont en doubles. 

Quelqu'un pourrait-il m'aider ? Merci beaucoup. 

Voici le code que je possède actuellement :



 

$rep = [string]       # répertoire à scanner

$cible = [string]    # nom du fichier à créer où sera écrit le résultat de la recherche de fichiers

$nbcarac = 0     # nombre de caractères contenus dans l'URL complète du nom de fichier


Clear-Host
Write-host "=== Script pour lister les fichiers en doubles==="
Write-Host ""

$rep = Read-Host "Veuillez saisir l'URL du répertoire à saisir s'il vous plaît.
exemple : O:\ATOUS\COMMUN\COVID-19\"                                              # saisi de l'URL du répertoire à scanner
Write-Host ""                                                              


$cible = Read-Host "Veuillez saisir le nom du fichier où sera écrit le résultat de votre recherche de fichiers.   exemple : Liste-fic_+255carac_25112021"   # saisi du nom du fichier à créer où sera écrit le résultat de la recherche de fichiers


# définitition du nom de fichier avec son URL et son extension
    $cible = ($HOME + "\Desktop\" + $cible + ".csv")
    Write-Host ""
    Write-host "=== Recherche de fichiers en cours... ==="


# boucle récursive parcourant tous les fichiers du répertoire à scanner
Get-ChildItem $rep -File -Recurse | ForEach {
    
    # récupération de l'URL complète du fichier
    $FN = $_.FullName
    
    # calcul du nombre de caractères dans l'URL du fichier
    $nbcarac = ($FN | Measure-Object -character | select -ExpandProperty characters)
    
    # si le nombre de caractères est supérieur à 255, j'inscris le nombre de caractères + l'URL du fichier
    If($nbcarac -GE 255) {Add-Content -LiteralPath $cible -value $nbcarac"¤"$FN}
}
Write-Host ""
Write-Host "=== Fin du script ==="
Pause

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 3 mois - il y a 1 an 3 mois #32881 par Laurent Dardenne
Salut,
une solution basée sur le regroupement de noms de fichier et filtre sur la longueur du path :
$FilesGroups=Get-ChildItem $rep -File -Recurse | Group-Object Name

#Filtre les groupes ayant plus d'un nom de fichier identique
#Enumére chaque group et filtre ses fichiers ayant une longueur de Path demandé.
$FilesGroups|? {$_.Count -gt 1}|? {$_.Group|? {$_.Fullname.Length -ge 255}}
#$FilesGroups=$null

A voir avec ta volumétrie, qq milliers de fichiers peuvent être gérés. Tu auras juste un pic d'occupation mémoire.
Pour obtenir l'intégralité des fichiers > à 255 il faut réécrire ce bout de code à l'aide d'instruction if ou d'un switch.

Tutoriels PowerShell
Dernière édition: il y a 1 an 3 mois par Laurent Dardenne.

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.065 secondes
Propulsé par Kunena