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 :

Renommer un groupe de fichier (script de transfert de photo)


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 117
    Par défaut Renommer un groupe de fichier (script de transfert de photo)
    Bonsoir,

    Je me suis mis depuis peu au batch afin d'effectuer des transfert de données en masse (photo, video, etc) de mon PC vers un disque dur externe en créant les dossier de stockage etc.

    Je voudrais pouvoir faire la même chose pour mes photos mais il me faut les renommer également. Et je n'arrive pas à trouver comment renommer un groupe de fichiers pour qu'ils aient la forme "NOM - 3chiffresAutoIncrémentés" (par ex : PHOTO - 001, PHOTO - 054, PHOTO - 127, etc).

    Mes scripts ont en général cette forme :

    echo off
    mkdir "cheminCible1"
    xcopy "cheminSource1\*.extension" "cheminCible1"
    mkdir "cheminCible2"
    xcopy "cheminSource2\*.extension" "cheminCible2"
    mkdir "cheminCible3"
    xcopy "cheminSource3\*.extension" "cheminCible3"
    ...
    end

    Il faudrait donc qu'à la suite de chaque xcopy je fasse le renommage de la totalité des fichiers du cheminCible dans la forme décrite ci-dessus.

    Savez-vous comment faire ça ? Si oui, mettez un petit peu de commentaires si possible histoire d'expliquer car je suis vraiment novice.

    Merci d'avance pour vos réponses.

    PS : je sais qu'il existe des logiciels qui font déjà ça mais si je ne les utilises pas c'est que je veux que mon batch le fasse en une seule fois et que je puisse "contrôler" ce qu'il fait (en gros que c'est moi qui écrive le code qui le fait).

  2. #2
    Membre Expert Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Par défaut
    Bonjour à toi,

    Voici de quoi t'aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for /F "delims=: tokens=1*" %%i in ('dir ^"CheminCible^" /b ^| findstr /n .') do (
        ren "%%j" "photo - %%i.jpg"
    )

    Pour explication :
    - La commande dir ^"CheminCible^" /b ^| findstr /n . t'affiche la liste des fichiers dans le repertoire cible avec un numéro de ligne précédé par :. Les ^ sont des charactères d'échappement.
    - J'utilise le for pour boucler sur cette liste, en scindant chaque ligne de la liste en deux, ce qu'il y a avant le : (le numéro de ligne) et ce qu'il y a après (le nom de fichier).
    - Ensuite il me reste juste à renommer, le nom du fichier étant dans la variable %%j et le numéro de ligne dans %%i.

    Si tu veux absolument le numéro sur 3 charactères, il te faudra transformer le %%i avant de renommer.

    Enfin tu n'avais pas précisé ce que NOM était, j'ai assumé que cela était une constante comme le PHOTO de ton exemple. A adapter si changement.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 117
    Par défaut
    Salut,

    Je reviens vers toi car je n'arrive pas à le faire fonctionner.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    echo off
    set a=TEST07
    mkdir "D:\[TEST]20091022\%a%"
    xcopy "D:\[TEST]20091022\TEST21\*.jpg" "D:\[TEST]20091022\%a%"
    xcopy "D:\[TEST]20091022\TEST22\*.jpg" "D:\[TEST]20091022\%a%"
    xcopy "D:\[TEST]20091022\TEST23\*.jpg" "D:\[TEST]20091022\%a%"
    for /F "delims=: tokens=1*" %%i in ('dir ^"D:\[TEST]20091022\%a%^" /b ^| findstr /n .') do (
    	ren "%%j" "2009_10_22 - TEST - PHOTO - %%i.jpg"
    )
    pause
    Ca crée le dossier, ca copie mais ne renomme car fichier introuvable.

    Merci d'avance.

    PS : j'ai tester juste ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    echo off
    set a=TEST07
    dir ^"D:\[TEST]20091022\%a%^" /b ^| findstr /n
    pause
    Ca m'affiche bien une liste des fichiers de ce dossier mais toujours avec un "fichier introuvable" en dernier

  4. #4
    Membre Expert Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Par défaut
    Hum bizarre, ça marche nickel chez moi.

    Enleve le echo off pour voir ce qu'il fait exactement.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 117
    Par défaut
    Même sans le echo off cela ne marche pas.

    Tiens j'ai testé ce code qui copie les photo de trois dossier dans un même dossier, puis doit renommer les 15 photos :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    set a=TEST10
    mkdir "D:\[TEST]20091022\%a%"
    xcopy "D:\[TEST]20091022\TEST21\*.jpg" "D:\[TEST]20091022\%a%"
    xcopy "D:\[TEST]20091022\TEST22\*.jpg" "D:\[TEST]20091022\%a%"
    xcopy "D:\[TEST]20091022\TEST23\*.jpg" "D:\[TEST]20091022\%a%"
    for /F "delims=: tokens=1*" %%i in ('dir ^"D:\[TEST]20091022\%a%^" /b ^| findstr /n .') do 	(
    	ren "%%j" "2009_10_22 - TEST - PHOTO - %%i.jpg"
    )
    pause
    A l'exécution, voilà le résultat :

    D:\[TEST]20091022>set a=TEST10
    D:\[TEST]20091022>mkdir "D:\[TEST]20091022\TEST10"
    D:\[TEST]20091022>xcopy "D:\[TEST]20091022\TEST21\*.jpg" "D:\[TEST]20091022\TEST
    10"
    D:\[TEST]20091022\TEST21\DSC00195.JPG
    D:\[TEST]20091022\TEST21\DSC00196.JPG
    D:\[TEST]20091022\TEST21\DSC00197.JPG
    D:\[TEST]20091022\TEST21\DSC00198.JPG
    D:\[TEST]20091022\TEST21\DSC00199.JPG
    5 fichier(s) copié(s)
    D:\[TEST]20091022>xcopy "D:\[TEST]20091022\TEST22\*.jpg" "D:\[TEST]20091022\TEST
    10"
    D:\[TEST]20091022\TEST22\DSC00201.JPG
    D:\[TEST]20091022\TEST22\DSC00203.JPG
    D:\[TEST]20091022\TEST22\DSC00204.JPG
    D:\[TEST]20091022\TEST22\DSC00205.JPG
    D:\[TEST]20091022\TEST22\DSC00206.JPG
    5 fichier(s) copié(s)
    D:\[TEST]20091022>xcopy "D:\[TEST]20091022\TEST23\*.jpg" "D:\[TEST]20091022\TEST
    10"
    D:\[TEST]20091022\TEST23\DSC00207.JPG
    D:\[TEST]20091022\TEST23\DSC00208.JPG
    D:\[TEST]20091022\TEST23\DSC00209.JPG
    D:\[TEST]20091022\TEST23\DSC00210.JPG
    D:\[TEST]20091022\TEST23\DSC00211.JPG
    5 fichier(s) copié(s)
    D:\[TEST]20091022>for /F "delims=: tokens=1*" %i in ('dir "D:\[TEST]20091022\TES
    T10" /b | findstr /n .') do (ren "%j" "2009_10_22 - TEST - PHOTO - %i.jpg" )
    D:\[TEST]20091022>(ren "DSC00195.JPG" "2009_10_22 - TEST - PHOTO - 1.jpg" )
    Le fichier spécifié est introuvable.
    D:\[TEST]20091022>(ren "DSC00196.JPG" "2009_10_22 - TEST - PHOTO - 2.jpg" )
    Le fichier spécifié est introuvable.
    D:\[TEST]20091022>(ren "DSC00197.JPG" "2009_10_22 - TEST - PHOTO - 3.jpg" )
    Le fichier spécifié est introuvable.
    D:\[TEST]20091022>(ren "DSC00198.JPG" "2009_10_22 - TEST - PHOTO - 4.jpg" )
    Le fichier spécifié est introuvable.
    D:\[TEST]20091022>(ren "DSC00199.JPG" "2009_10_22 - TEST - PHOTO - 5.jpg" )
    Le fichier spécifié est introuvable.
    D:\[TEST]20091022>(ren "DSC00201.JPG" "2009_10_22 - TEST - PHOTO - 6.jpg" )
    Le fichier spécifié est introuvable.
    D:\[TEST]20091022>(ren "DSC00203.JPG" "2009_10_22 - TEST - PHOTO - 7.jpg" )
    Le fichier spécifié est introuvable.
    D:\[TEST]20091022>(ren "DSC00204.JPG" "2009_10_22 - TEST - PHOTO - 8.jpg" )
    Le fichier spécifié est introuvable.
    D:\[TEST]20091022>(ren "DSC00205.JPG" "2009_10_22 - TEST - PHOTO - 9.jpg" )
    Le fichier spécifié est introuvable.
    D:\[TEST]20091022>(ren "DSC00206.JPG" "2009_10_22 - TEST - PHOTO - 10.jpg" )
    Le fichier spécifié est introuvable.
    D:\[TEST]20091022>(ren "DSC00207.JPG" "2009_10_22 - TEST - PHOTO - 11.jpg" )
    Le fichier spécifié est introuvable.
    D:\[TEST]20091022>(ren "DSC00208.JPG" "2009_10_22 - TEST - PHOTO - 12.jpg" )
    Le fichier spécifié est introuvable.
    D:\[TEST]20091022>(ren "DSC00209.JPG" "2009_10_22 - TEST - PHOTO - 13.jpg" )
    Le fichier spécifié est introuvable.
    D:\[TEST]20091022>(ren "DSC00210.JPG" "2009_10_22 - TEST - PHOTO - 14.jpg" )
    Le fichier spécifié est introuvable.
    D:\[TEST]20091022>(ren "DSC00211.JPG" "2009_10_22 - TEST - PHOTO - 15.jpg" )
    Le fichier spécifié est introuvable.
    D:\[TEST]20091022>pause
    Appuyez sur une touche pour continuer...

  6. #6
    Membre Expert Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Par défaut
    Piouuu je suis vraiment fatigué moi ....

    C'est pas bien méchant, c'est juste que dans le ren il faut mettre les chemins complets aussi.

    Donc une solution simple est de modifier le %%j en "D:\[TEST]20091022\%a%\%%j"


    (Au fait le script ne gère que les repertoire sans sous-repertoires, il faudrait modifier un peu si tu veux gérer ça)

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 117
    Par défaut
    Merci, c'est bon ça fonctionne.

    Et pour l'histoire des sous-répertoires en général quand je trie les données à transférer je fais en sorte qu'il n'y en ai pas.

    Bon reste plus qu'à gérer le %%i pour qu'il soit sur 3 caractères plus quelque autres problèmes.

    Premier problèmes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for /F "delims=: tokens=1*" %%i in ('dir ^"D:\[TEST]20091022\%a%^" /b ^| findstr /n .') do (
    	if %%i<10 (
    		ren "D:\[TEST]20091022\%a%\%%j" "2009_10_22 - TEST - PHOTO - 00%%i.jpg"
    	) else if %%i<100 (
    		ren "D:\[TEST]20091022\%a%\%%j" "2009_10_22 - TEST - PHOTO - 0%%i.jpg"
    	) else (
    		ren "D:\[TEST]20091022\%a%\%%j" "2009_10_22 - TEST - PHOTO - %%i.jpg"
    	)
    )
    Serais-tu pourquoi ce code ne marche pas ? Je pense que sur le principe de fonctionnement ça doit être bon, mais sur la forme un peu moins...

    Deuxième (et normalement dernier problème) :

    Sais-tu comment gérer les "à","é",etc ? Car quand je les met dans un nom, j'ai d'autre caractère à la place. Par exemple le "à" c'était transformer en "ó" il me semble.

    Encore une fois merci.

  8. #8
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Ou utiliser "%%~dpnxJ" à la place, qui devrait expander le "%%J" en chemin d'accès complet...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

Discussions similaires

  1. Script de transfert de fichier en SFTP
    Par JeReMsS69 dans le forum Réseau
    Réponses: 1
    Dernier message: 15/09/2009, 19h43
  2. Réponses: 1
    Dernier message: 20/05/2009, 17h33
  3. [MySQL] [mysqli] Script pour transfert massif de données (fichier excel)
    Par floctc dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 01/04/2009, 15h26
  4. renommer le nom de fichier avec un script
    Par Abdellah.alaoui2006 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 25/01/2009, 15h50
  5. Transfert FTP automatisé sans fichier script.txt
    Par RaphTIM dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 05/09/2007, 21h16

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