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 les fichiers d'un dossier d'après les noms des fichiers d'un autre dossier [Batch]


Sujet :

Scripts/Batch

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2010
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Renommer les fichiers d'un dossier d'après les noms des fichiers d'un autre dossier
    Bonjour,
    Je suis désolée si je pose une question à laquelle une réponse a déjà été donnée mais je ne la trouve pas par moi-même.
    Mon problème est le suivant :
    J'ai deux dossiers sur mon bureau. Le premier, appelons le "SOURCE" contient des photos au format .JPG avec les noms et prénoms des élèves de mon collège, mais les photos sont de mauvaises qualité. L'autre, appelons le "DEST" contient également des photos au format .JPG, les photos sont de bonne qualité, mais les fichiers ont un nom séquentiel dans le même ordre que l'ordre alphabétique, mais qui ne m'indique pas du tout qui est en photo.
    Je souhaite renommer les fichiers de DEST en utilisant le nom des fichiers de SOURCE.
    Je n'ai jamais programmé un seul Batch de ma vie, mais je programme dans plusieurs langages, donc je pense pouvoir suivre si vous m'expliquez pas trop vite.
    Je vous remercie beaucoup des réponses que vous m'apporterez.
    Au plaisir de vous lire,
    cheblan (#FFFFFF)

  2. #2
    Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2010
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Mon idée
    En fait, je continue à chercher dans mon coin en attendant de trouver une soluce, éventuellement avec votre aide.
    J'ai imaginé un batch composé de 3 boucles for successives

    Première boucle : on remplit un tableau avec tous les noms de fichiers du dossier SOURCE.
    Deuxième boucle : on remplit un tableau avec tous les noms de fichiers du dossier DEST.
    Troisième boucle : on renomme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for /l %%i in (0,1,%taille%) do
    (
    ren source[i] dest[i]
    echo %%i
    )
    Je suis incapable d'aller plus loin sans votre aide.
    Merci de me donner un coup de pouce s'il vous plaît.
    cheblan #FFFFFF

  3. #3
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    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 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Voici un exemple basé sur ton raisonnement qui me parait bon.

    J'ai un "renome.bat". Au même niveau 2 dossiers "source" et "dest".
    Contenu de source :
    bleu.jpg
    orange.jpg
    rouge.jpg
    vert.jpg
    violet.jpg
    Contenu de dest :
    1.jpg
    2.jpg
    3.jpg
    4.jpg
    5.jpg
    Le script renome.bat :
    Code batch : 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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    @echo off
     
    set source=.\source
    set dest=.\dest
     
    set /A sourcecount=0
    set /A destcount=0
     
    SETLOCAL ENABLEDELAYEDEXPANSION
     
    REM récupère les items de la source
    FOR /F "tokens=*" %%a IN ('dir "%source%\*.jpg" /ogne-d /b 2^>nul') DO (
    	set /A sourcecount+=1
    	set sourceitem[!sourcecount!]=%%~a
    )
     
    REM récupère les items de la destination
    FOR /F "tokens=*" %%a IN ('dir "%dest%\*.jpg" /ogne-d /b 2^>nul') DO (
    	set /A destcount+=1
    	set destitem[!destcount!]=%%~a
    )
     
    REM vérifie si il y à le même nombre d'items
    if NOT %sourcecount% EQU %destcount% (
    	echo Nombre d element different entre source et destination [%sourcecount%, %destcount%]
    	pause
    	goto :EOF
    )
     
    REM vérifie si il y a des items à traiter
    if %sourcecount% EQU 0 (
    	echo Il n y a aucun item a traiter
    	pause
    	goto :EOF
    )
     
    REM pour chaque index
    FOR /L %%a IN (1, 1, %sourcecount%) DO (
    	ren "%dest%\!destitem[%%a]!" "!sourceitem[%%a]!"
    )
     
    pause

  4. #4
    Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2010
    Messages : 3
    Points : 3
    Points
    3
    Par défaut MERCI !
    Ca marche du tonnerre !!!! Bravo et merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/05/2012, 15h26
  2. Parcourir un dossier et récupérer le nom des fichiers
    Par wahab2052 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 30/11/2010, 12h25
  3. Réponses: 1
    Dernier message: 10/05/2006, 19h45
  4. Ecrire les noms des fichiers dans une colonne
    Par REGIMBAL dans le forum Access
    Réponses: 1
    Dernier message: 20/04/2006, 11h29
  5. ShellListView : comment récupérer les noms des fichiers?
    Par Lolo1988 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 11/12/2005, 23h19

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