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

Scripts/Batch Discussion :

Renommage de fichier en masse


Sujet :

Scripts/Batch

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Octobre 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Octobre 2022
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Renommage de fichier en masse
    Bonjour, j’ai souvent dans mon travail besoin de renommer une masse de fichiers. Au début c’était peu mais là ça me prend beaucoup de temps et je souhaiterai automatiser ça (aujourd’hui j’ai reçu 209 fichiers comme ça à renommer…)

    Je reçois des fichiers de ce style :
    aaa_S0123_1234_20221004121653.xyz
    bbb_S0123_1234_20221004121653.xyz
    ccc_S0123_1234_20221004121653.xyz

    Le renommage se fait de cette manière :
    S123_ aaa_1234_20221004121653.xyz
    S123_ bbb_1234_20221004121653.xyz
    S123_ ccc_1234_20221004121653.xyz

    Le but est donc de déplacer une partie dès caractère au début de la chaîne.
    Une petite subtilité est que si j’ai du :
    S0123 je dois renommer en S123
    S0012 je dois renommer en S023
    S1234 je laisse en S1234

    Si c’est faisable sans être trop compliqué je suis preneur
    Merci d’avance à ceux qui pourront m’aider

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 177
    Points : 5 738
    Points
    5 738
    Par défaut
    Hello,

    aaa_S0123_1234_20221004121653.xyz
    Les fichier commencent toujours par 3 lettres ?


    Le renommage se fait de cette manière :
    S123_ aaa_1234_20221004121653.xyz
    L'espace avant aaa est volontaire ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Octobre 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Octobre 2022
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Non j’ai mis aaa pour l’exemple c’est plutôt
    colpromo_S01234…
    promocom_S01234…
    promobox_S01234…
    pres_S01234…
    cppo_S01234…
    box_S01234…
    Voilà j’ai les 6 nommages de fichiers que je peux avoir.
    Pas d’espaces non c’est une faute de frappe

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 177
    Points : 5 738
    Points
    5 738
    Par défaut
    Je te propose un premier script en PowerShell.

    Tes fichiers a renommer seront dans "C:\mondossier" pour commencer (modifiable a ta convenance bien sur)
    Nous allons définir 3 règles de renommages (basé sur les expressions régulières). Il utilise la première règle qui correspond au nom du fichier (ceci me parait le plus flexible pour modification futur)

    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
    17
    18
    19
    20
    21
    22
    23
    $dossier = "C:\mondossier"
     
    $rules = (('(...)_(S0123)', 'S123_$1'),
            ('(...)_(S0012)', 'S023_$1'),
            ('(...)_(S[^_]+)', '$2_$1'))
     
    $files = Get-ChildItem -LiteralPath $dossier -File -Force
    foreach($file in $files)
    {
        foreach($rule in $rules)
        {
            $new = $file.Name -replace $rule[0], $rule[1]
            if ($file.Name -ne $new)
            {
                Write-Host "$($file.Name) -> $new"
                $file | Rename-Item -NewName $new -Force
                break
            }
        }
    }
     
    Write-Host "`n`nFin"
    Read-Host

  5. #5
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 177
    Points : 5 738
    Points
    5 738
    Par défaut
    En complément, pour exécuter un script PowerShell

    https://learn.microsoft.com/fr-fr/po...o-run-a-script

    Une fois le niveau de sécurité modifié tu peux faire un clic droit sur le script .ps1 et faire Exécuter avec PowerShell

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 177
    Points : 5 738
    Points
    5 738
    Par défaut
    Voici une modification avec les derniers précisions

    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
    17
    18
    19
    20
    21
    22
    23
    $dossier = "C:\mondossier"
     
    $rules = (('([^_]+)_(S0123)', 'S123_$1'),
            ('([^_]+)_(S0012)', 'S023_$1'),
            ('([^_]+)_(S[^_]+)', '$2_$1'))
     
    $files = Get-ChildItem -LiteralPath $dossier -File -Force
    foreach($file in $files)
    {
        foreach($rule in $rules)
        {
            $new = $file.Name -replace $rule[0], $rule[1]
            if ($file.Name -ne $new)
            {
                Write-Host "$($file.Name) -> $new"
                # $file | Rename-Item -NewName $new -Force
                break
            }
        }
    }
     
    Write-Host "`n`nFin"
    Read-Host

  7. #7
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 177
    Points : 5 738
    Points
    5 738
    Par défaut
    Mes règles sont assez générique mais je pense que c'est le mieux.
    Si demain tu as des fichiers comme ci-dessous ça fonctionnera toujours
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    colpromoblabla_S01234…
    promocomblibli_S01234…
    promoboxbloblo_S01234…

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Octobre 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Octobre 2022
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Merci ! C’est top par contre qd je mettais S0123 les chiffres sont variable je peux avoir du S0024 du S0048 du S0147 du S1128 etc
    En tout cas merci de m’aider

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Octobre 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Octobre 2022
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Après les S0xxx sont déjà tous défini j’en ai environ 20 je peux éventuellement dupliquer les règles pour chaque cas ?

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Octobre 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Octobre 2022
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    En gros c’est si y’a un 0 (ou 2) après le S je supprime un 0

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Octobre 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Octobre 2022
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Je peux éventuellement poster un screen des fichiers si ça peut t’aider (si c’est autorisé bien sûr)

  12. #12
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 177
    Points : 5 738
    Points
    5 738
    Par défaut
    Je regarderai demain mais dans ton exemple il y a des chiffres qui sont remplacer par d'autre (qui n'ont rien à voir avec ceux d'origine).
    C'est une erreur ?

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Octobre 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Octobre 2022
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    En fait c’est moi qui me suis mal exprimé.
    Dans le nom des fichiers j’ai des Sxxxx (et non S0123 tout le temps) ou les xxxx sont des codes site donc j’ai une vingtaine de site (comme je disais S0024, S0048 etc)
    Je pense que le plus simple est de passer le script par codes site et de modifier les 3 rules
    Je vais tester ça merci encore !

  14. #14
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 177
    Points : 5 738
    Points
    5 738
    Par défaut
    Ok, je suis un peu embêtè car en ayant pris conscience de cette règle, il nous suffit plus que d'une "rule"
    Gardons comme même la structure actuelle.

    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
    17
    18
    19
    20
    21
    $dossier = "C:\mondossier"
     
    $rules = (,('([^_]+)_S0?(\d+)', 'S$2_$1'))
     
    $files = Get-ChildItem -LiteralPath $dossier -File -Force
    foreach($file in $files)
    {
        foreach($rule in $rules)
        {
            $new = $file.Name -replace $rule[0], $rule[1]
            if ($file.Name -ne $new)
            {
                Write-Host "$($file.Name) -> $new"
                $file | Rename-Item -NewName $new -Force
                break
            }
        }
    }
     
    Write-Host "`n`nFin"
    Read-Host

Discussions similaires

  1. [Débutant][script sh] Renommage de fichiers en masse
    Par hepha1970 dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 09/03/2017, 17h38
  2. Renommage de fichiers en masse
    Par micbnd dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 22/07/2012, 22h01
  3. Renommage d'une partie de nom de fichiers en masse et aussi à l'intérieur
    Par sclinard dans le forum Shell et commandes POSIX
    Réponses: 2
    Dernier message: 17/09/2010, 16h02
  4. routine de renommage des fichiers
    Par jeremy.blanche dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 11/08/2006, 12h24
  5. [batch] renommage de fichiers dans des rep enfants
    Par khayyam90 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 25/08/2005, 10h03

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