Extraction d'une liste de fichiers qui contiennent un/des caractère spéciaux.

Signaler
-
 shellxy -
Bonjour à tous,
Préparant un projet de migration (service microsoft ondrive) je vais migrer les données utilisateurs.
cependant certain caractères spéciaux que contiennent le nom des fichiers sont bloquants.
J'aimerais donc créé un fichier listant les "fichiers ou dossiers" qui contiennent les fameux caractères non autorisé pour les modifier avec l'utilisateur final.
voici les caractères : ~ "# % & * : < > ? / \ { | }.
ainsi que l'espace en debut et en fin de chaine.

initialement, j'ai fais un script pour lister dans un fichier txt les éléments de plus de 256 caractères :
Get-ChildItem "E:\users\" -r * |? {$_.fullname.length -ge 256} |%{$_.fullname} | out-file "C:\extraction fichiers trop long.txt"

j'aimerais faire quelque chose d'identique avec les fichiers contenant les caractères citées plus haut.

4 réponses

Messages postés
16
Date d'inscription
dimanche 19 janvier 2020
Statut
Membre
Dernière intervention
21 juillet 2021
4
Bonjour,

Get-ChildItem "E:\users\" -r *  | where {$_.basename -match '~|"|#|%|&|:|<|>|/|\|>
'} |%{$_.fullname}

Tu noteras que cela ne fonctionne pas avec les caractères ? et * (qui listent tous les fichiers)
Ho un grand merci :)

cette commande prend-elle également les espace en début et en fin de chaine?

encore grand merci
Messages postés
16
Date d'inscription
dimanche 19 janvier 2020
Statut
Membre
Dernière intervention
21 juillet 2021
4
Oui.
Get-ChildItem "E:\users\" -r * | where {$_.basename -match '^\s|\s$|~|"|#|%|&|:|<|>|/|\|>'} |%{$_.fullname}

Pour commencer avec les expressions régulières tu peux lire :
https://docs.microsoft.com/fr-fr/dotnet/standard/base-types/regular-expression-language-quick-reference
un tres grand merci