IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres systèmes Discussion :

Comment renommer en masse certains caractères de fichiers


Sujet :

Autres systèmes

  1. #1
    Membre habitué Avatar de DenisHen
    Homme Profil pro
    Dessinateur / projeteur
    Inscrit en
    Novembre 2013
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Dessinateur / projeteur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2013
    Messages : 384
    Points : 198
    Points
    198
    Par défaut Comment renommer en masse certains caractères de fichiers
    Bonjour à la communauté.
    J'ai des fichiers avec des duos ou des trios de caractère qui remplacent un caractère accentué dans mes noms de fichiers (parfois plusieurs centaines de fichiers).
    Ce sont des caractères de type : "é" à la place du "é" ou "’" pour l'apostrophe...
    Je cherchais à faire un .bat (comme au siècle dernier) avec un rename en boucle grâce à un fichier source .txt contenant tous les remplacements (caractères à remplacer par caractères accentués), mais je n'arrive à rien.
    Ces fichiers sont parfois dispatchés dans plusieurs répertoires, donc les logiciels comme AntRename ou LupasRename sont fastidueux à utiliser.
    Quelqu'un aurait une astuce, un conseil ?
    Bien à toi la communauté.
    Denis...
    Windows 7, 8 et 10 / Debian / RaspBian / AutoCAD 3D 2023

    Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
    Davantage d'avantages, avantagent davantage (Bobby Lapointe).
    La connaissance s'accroît quand on la partage (Socrate).
    Tant va la cruche à l'eau que l'habit n'amasse pas mousse. (Moi)
    Un clavier azerty en vaut deux (developpez.net).

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Points : 1 876
    Points
    1 876
    Par défaut
    Au lieu d'un fichier .bat ce serait probablement plus facile en Powershell je pense.
    Je suis sous Linux donc je ne peux pas tester mais je jetterais un coup d'oeil à [System.Text.Encoding]::UTF8.GetBytes(), ce genre de truc... puisque apparemment il s'agit juste de corriger les strings en convertissant d'un charset vers un autre.

  3. #3
    Membre habitué Avatar de DenisHen
    Homme Profil pro
    Dessinateur / projeteur
    Inscrit en
    Novembre 2013
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Dessinateur / projeteur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2013
    Messages : 384
    Points : 198
    Points
    198
    Par défaut
    Bonjour binarygirl et merci pour ta réponse.
    J'ai jeter un œil sur ton idée : [System.Text.Encoding]::UTF8.GetBytes().
    Un grand merci à toi, mais je ne pige rien à ce que j'ai trouvé
    D'autres idées ?
    Windows 7, 8 et 10 / Debian / RaspBian / AutoCAD 3D 2023

    Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
    Davantage d'avantages, avantagent davantage (Bobby Lapointe).
    La connaissance s'accroît quand on la partage (Socrate).
    Tant va la cruche à l'eau que l'habit n'amasse pas mousse. (Moi)
    Un clavier azerty en vaut deux (developpez.net).

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Points : 1 876
    Points
    1 876
    Par défaut
    Je jetterai un coup d'oeil au bureau demain si vous n'avez pas trouvé de solution d'ici-là.
    Mais sous Linux, voici un exemple de conversion de charset avec l'utilitaire iconv:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "test é ’" | iconv -t WINDOWS-1252  -f UTF-8
    Résultat:
    Il me semble que c'est que vous voulez obtenir.
    A la limite vous pourriez même télécharger cet utilitaire pour Windows. Mais je pense qu'on doit pouvoir scripter tout ça en Powershell.

  5. #5
    Membre habitué Avatar de DenisHen
    Homme Profil pro
    Dessinateur / projeteur
    Inscrit en
    Novembre 2013
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Dessinateur / projeteur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2013
    Messages : 384
    Points : 198
    Points
    198
    Par défaut
    Bonjour binarygirl et merci pour votre réponse.
    Effectivement, je n'arrive à rien .
    Merci encore pour votre aide.
    Windows 7, 8 et 10 / Debian / RaspBian / AutoCAD 3D 2023

    Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
    Davantage d'avantages, avantagent davantage (Bobby Lapointe).
    La connaissance s'accroît quand on la partage (Socrate).
    Tant va la cruche à l'eau que l'habit n'amasse pas mousse. (Moi)
    Un clavier azerty en vaut deux (developpez.net).

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Points : 1 876
    Points
    1 876
    Par défaut
    Bonjour,

    Désolée pour la réponse tardive. Voici un bout de code Powershell, qui est peut-être déjà installé chez vous puisque vous avez Windows.
    Ce code lit un répertoire de manière récursive, lit la liste des fichiers, affiche le nom original du fichier, ainsi que son équivalent "décodé" de UTF-8 vers CP1252.
    Faites-le tourner et vérifiez que c'est le résultat voulu qui est affiché. Dans l'affirmative, vous pouvez décommenter la ligne Rename-Item, c'est elle qui va renommer les fichiers

    NB. je ne garantis pas que ce code va tourner de manière fiable. Je vous recommande de faire d'abord le test sur une copie de votre répertoire.
    Vous devez évidemment adapter la première ligne pour fournir le répertoire à traiter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Get-ChildItem -Attributes !Directory -Recurse "C:\Users\test\Documents " |
    Foreach-Object {
        $old_name = $_.FullName
        $bytes = [System.Text.Encoding]::GetEncoding(1252).GetBytes($old_name)
        $new_name = [System.Text.Encoding]::UTF8.GetString($bytes)
    
        Write-Host "$($old_name) => $($new_name)"
        # Rename-Item -LiteralPath "$old_name" -NewName "$new_name"
    }

  7. #7
    Membre habitué Avatar de DenisHen
    Homme Profil pro
    Dessinateur / projeteur
    Inscrit en
    Novembre 2013
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Dessinateur / projeteur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2013
    Messages : 384
    Points : 198
    Points
    198
    Par défaut
    Bonjour binarygirl, et merci pour votre m'aider.
    J'ai tenté d'utiliser votre code dans PowerShell, mais PS ne veut pas l'exécuter :
    Impossible de charger le fichier G:\Renommer.ps1, car l’exécution de scripts est désactivée sur ce système
    Je suis l'unique utilisateur de mon PC et en suis l'administrateur. Windows est vraiment pénible avec sa sécurité, pas très efficace de surcroit.
    Je n'ai rien trouvé pour lever cette interdiction.
    Lorsque je lance le fichier .ps1 que j'ai créé depuis votre code, l'écran affiche bien des lignes, mais trop vite pour que j'ai le temps de lire et ensuite, la fenêtre PS disparait.
    J'ai tenté d'envoyer le résultat dans un fichier texte, en vain.
    J'ai donc placé un "pause" à la fin du code, houra ! ! la fenêtre persiste.
    Mais je pense que le résultat est inversé, en voici un petit extrait :
    G:\Séries\.... => G:\S�ries\....
    Windows 7, 8 et 10 / Debian / RaspBian / AutoCAD 3D 2023

    Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
    Davantage d'avantages, avantagent davantage (Bobby Lapointe).
    La connaissance s'accroît quand on la partage (Socrate).
    Tant va la cruche à l'eau que l'habit n'amasse pas mousse. (Moi)
    Un clavier azerty en vaut deux (developpez.net).

  8. #8
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Ma théorie: Tes noms de fichier sont belle et bien déjà encodés en UTF-8.
    Voilà ce qui a du se produire: prenons l'exemple suivant Astérix et Cléopâtre.avi => Astérix et Cléopâtre.avi.

    Code txt : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    1) Au départ: Correctement encodé en UTF-8 et interprété comme tel:
    A  s  t  é     r  i  x     e  t     C  l  é     o  p  â     t  r  e  .  a  v  i
    A1 73 74 C3 A9 72 69 78 20 65 74 20 43 6C C3 A9 6F 70 C3 A2 74 72 65 2E 61 76 69
    
    2) Mais pour une quelconque raison interprété comme du Windows-1252 (à noter que l'encodage n'a pas bougé)
    A  s  t  Ã  ©  r  i  x     e  t     C  l  Ã  ©  o  p  Ã  ¢  t  r  e  .  a  v  i
    A1 73 74 C3 A9 72 69 78 20 65 74 20 43 6C C3 A9 6F 70 C3 A2 74 72 65 2E 61 76 69
    
    3) Puis convertit de ce qu'on croit à tort être du Windows-1252 vers de l'UTF-8
    A  s  t  Ã     ©     r  i  x     e  t     C  l  Ã     ©     o  p  Ã     ¢     t  r  e  .  a  v  i
    A1 73 74 C3 83 C2 A9 72 69 78 20 65 74 20 43 6C C3 83 C2 A9 6F 70 C3 83 C2 A2 74 72 65 2E 61 76 69

    Je pense que tes noms de fichier erronés en sont au stade 3. À noter qu'il n'y a pas de différence entre les codes de 1) et 2), et pas de différence d'affichage entre 2) et 3).

    Si ma théorie est juste, il est inutile de chercher à passer d'un encodage à l'autre car tous tes noms de fichiers sont déjà en UTF-8. (d'autant que tu risques de remplacer ceux qui sont corrects).
    Tout ce que tu peux faire c'est de chercher les séquences é pour les remplacer par é, etc.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  9. #9
    Membre habitué Avatar de DenisHen
    Homme Profil pro
    Dessinateur / projeteur
    Inscrit en
    Novembre 2013
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Dessinateur / projeteur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2013
    Messages : 384
    Points : 198
    Points
    198
    Par défaut
    Bonjour CosmoKnacki et merci pour ton aide.
    Ta théorie est très bonne, je pense que le problème vient que les fichiers sont stockés sur un serveur distant (en Angleterre).
    C'est la raison pour laquelle j'étais parti sur un .bat avec toutes les "paires" de caractères à remplacer par celui accentué.
    Mais je n'ai pas réussi à utiliser la commande DOS "rename", même en ligne de commande.
    Windows 7, 8 et 10 / Debian / RaspBian / AutoCAD 3D 2023

    Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
    Davantage d'avantages, avantagent davantage (Bobby Lapointe).
    La connaissance s'accroît quand on la partage (Socrate).
    Tant va la cruche à l'eau que l'habit n'amasse pas mousse. (Moi)
    Un clavier azerty en vaut deux (developpez.net).

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Points : 1 876
    Points
    1 876
    Par défaut
    Citation Envoyé par DenisHen Voir le message
    Ta théorie est très bonne, je pense que le problème vient que les fichiers sont stockés sur un serveur distant (en Angleterre).
    Quel OS et quel système de fichier ? Ça peut jouer aussi.
    Comment agissez-vous sur sur serveur ? En SSH, remote desktop, autre ?
    Si le script tourne sur votre PC local, cela veut-il dire qu'un "disque" est monté via réseau ou autre ?

    Pour exécuter le script vous pouvez tout simplement ouvrir une boîte MS-DOS, puis taper powershell suivi du chemin complet vers le script.
    Éventuellement en administrateur. Ce problème de sécurité que vous décrivez est bien connu et il y a différentes approches.

  11. #11
    Membre habitué Avatar de DenisHen
    Homme Profil pro
    Dessinateur / projeteur
    Inscrit en
    Novembre 2013
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Dessinateur / projeteur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2013
    Messages : 384
    Points : 198
    Points
    198
    Par défaut
    En fait, l'archivage se fait automatiquement depuis un serveur local vers un serveur en Angleterre.
    Depuis mon bureau, je récupère les fichiers désirés avec FileZilla (en FTP normalement).
    Je suis sous Windows 10, mais je ne sais pas pour les serveurs.
    Windows 7, 8 et 10 / Debian / RaspBian / AutoCAD 3D 2023

    Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
    Davantage d'avantages, avantagent davantage (Bobby Lapointe).
    La connaissance s'accroît quand on la partage (Socrate).
    Tant va la cruche à l'eau que l'habit n'amasse pas mousse. (Moi)
    Un clavier azerty en vaut deux (developpez.net).

Discussions similaires

  1. [Batch] Comment Renommer / tronquer le nom de fichier - traitement de masse
    Par rlau01 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 19/02/2018, 08h58
  2. [Batch] Renommer en masse certains fichiers
    Par Goubil dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 06/05/2011, 18h44
  3. Comment trouver une chaine de caractère dans fichier texte
    Par youssef1989 dans le forum Débuter
    Réponses: 3
    Dernier message: 01/05/2008, 16h45
  4. Réponses: 8
    Dernier message: 16/06/2006, 01h06
  5. comment renommer un fichier
    Par mandrake_of_mandregas dans le forum Access
    Réponses: 6
    Dernier message: 17/10/2005, 20h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo