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

Windows Discussion :

Editer le nom de fichiers en ligne de commandes sous win7


Sujet :

Windows

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    335
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 335
    Points : 70
    Points
    70
    Par défaut Editer le nom de fichiers en ligne de commandes sous win7
    Bonjour,

    J’ai un dossier contenant 50 fichiers pdf
    J’aimerais une solution pour modifier leurs noms d’un coup : par exemple remplacer tous les é par des e, tout cela en ligne de commandes sous win7
    Comment puis-je procéder ?
    Merci d’avance. .

  2. #2
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Bonjour à toi,

    Ce n'est pas compliqué en sois par contre il faudrait que tu exprime clairement ce que tu veux remplacer?
    Tous les accents ? Des mots présents dans le nom des fichiers ? des chiffres ?

    Car en fonction ce n'est pas tout à fait pareille.
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    335
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 335
    Points : 70
    Points
    70
    Par défaut
    oui je m'explique:
    je possède une série de fichiers dont les noms comportent des ', é, è, ç...
    le problème: je dois faire à coté un fichier html contenant des liens vers ces fichiers.
    or u lien avec caractère spécial ne fonctionne pas!
    je voudrai donc les remplacer par des _, e, c...

  4. #4
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Ok alors en batch je te propose ça :
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    mode con codepage select=1252
    @echo off
    Setlocal enabledelayedexpansion
    for /R %%d in (*) do (
    	set an=%%~nd
     
    	set an=!an:'=_!
    	set an=!an:à=a!
    	set an=!an:ç=c!
    	set an=!an:é=e!
    	set an=!an:è=e!
     
    	if [!an!]==[] (set an=)
    	set newname=!an!%%~xd
     
    	if /i not [%%~nd%%~xd]==[!newname!] rename "%%d" !newname!
    )
    endlocal
    Et en powershell :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Get-ChildItem | ForEach-Object {
    $original = $_
    $newname = @()
    $original.Name.ToCharArray() | ForEach-Object {
          $newname += switch ($_){ 
                'à' {'a'} 
                'ç' {'c'} 
                'é' {'e'} 
                'è' {'e'} 
                "'" {'_'} 
                DEFAULT {"$_"}
            }  
                }
    $newname -join ""
    Rename-Item -Path $original -NewName $newname -PassThru -WhatIf
    }
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    335
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 335
    Points : 70
    Points
    70
    Par défaut
    merci mais en fait je n'y comprends rien
    je cherchais un équivalent sous le Command Prompt de windows,
    de la commande rename de linux

  6. #6
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    ???? Sérieux ????
    Le batch c'est quoi pour toi ?

    Si tu lut ce le premier code que j'ai posté il y a bien rename dedans :
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    mode con codepage select=1252
    @echo off
    Setlocal enabledelayedexpansion
    for /R %%d in (*) do (
    	set an=%%~nd
     
    	set an=!an:'=_!
    	set an=!an:à=a!
    	set an=!an:ç=c!
    	set an=!an:é=e!
    	set an=!an:è=e!
     
    	if [!an!]==[] (set an=)
    	set newname=!an!%%~xd
     
    	if /i not [%%~nd%%~xd]==[!newname!] rename "%%d" !newname!
    )
    endlocal
    Mais les accents et compagnie, faut bien les remplacer à un moment si on veut qu'ils ne soient plus là non ?
    Sous linux non plus on ne fait disparaître par magie les caractère accentués !

    Pour le plaisir :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #!/bin/bash
     
    IFS="|"
    if [ $# -lt 1 ]
    then
            echo "Usage: `basename $0` <file(s)>"
    fi
    for file in $@
    do
       file_mod=`echo "$file" | \
          tr '[A-Z]' '[a-z]' | \
          tr '[àâäéèêëîïôöùûü]' '[aaaeeeeiioouuu]' | \
          sed -e "s/[[:space:]]/_/g" | \
          sed -e "s/-//g" | \
          sed -e "s/\/$//" | \
          sed -e "s/'/_/g" | \
          sed -e "s/__/_/g"`
       mv "$file" "$file_mod"
    done
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

Discussions similaires

  1. Afficher dans un Edit le nom du fichier (xls ou txt) chargé
    Par nilsmatlab dans le forum Interfaces Graphiques
    Réponses: 7
    Dernier message: 01/06/2011, 16h44
  2. import de fichier en ligne de commande
    Par gypa dans le forum Requêtes
    Réponses: 3
    Dernier message: 15/11/2006, 10h40
  3. Compresser un fichier en ligne de commande
    Par silvaS dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 07/07/2006, 16h59
  4. Impossible de supprimer fichier en ligne de commande
    Par alexg81 dans le forum Windows
    Réponses: 2
    Dernier message: 20/04/2006, 08h05
  5. Réponses: 3
    Dernier message: 08/03/2006, 15h54

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