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 :

Suivant une liste, compter et renommer les fichiers d'un dossier


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Testeur en application
    Inscrit en
    Octobre 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Testeur en application
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2015
    Messages : 54
    Par défaut Suivant une liste, compter et renommer les fichiers d'un dossier
    Bonjour à tous,

    J'ai besoin de vos lumières pour le problème suivant:

    Un premier batch me génère le fichier ICI.txt.
    Ce fichier ICI.txt est une liste de fichiers avec le chemin du fichier, par exemple H:\TEMP\N3\image azur bleu cadre rouge 3.jpg

    Les extensions des fichiers contenues dans le fichier ICI.txt sont différentes car le dossier analysé contient des images sous diverses extensions (*.JPG, *.PNG, *.BMP, etc).

    Je voulais qu'en suivant ma liste ICI.txt, et via une boucle FOR, compter le nombre de fichiers et attribuer à chacun le résultat du compteur pour les renommer. L'extension devant bien sûr rester inchangée.

    Voici le code que j'ai créé, mais impossible de renommer les fichiers, le résultat est "Le nom de fichier existe déjà, ou le fichier est introuvable."

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    setlocal ENABLEDELAYEDEXPANSION
    
    for /f %%a in (ICI.txt) do (set /a nbf+=1 
    ren "%%a" %nbf%.*
    )
    
    end local
    Je ne vois pas où se trouve mon erreur. Pouvez-vous m'aider s'il vous plait? Merci.

  2. #2
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Je propose

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    set /A nbf=0
    
    setlocal ENABLEDELAYEDEXPANSION
    
    for /f %%a in (ICI.txt) do (
    set /a nbf+=1 
    ren %%a !nbf!.*
    )
    
    endlocal

  3. #3
    Membre averti
    Homme Profil pro
    Testeur en application
    Inscrit en
    Octobre 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Testeur en application
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2015
    Messages : 54
    Par défaut
    En effet, c'est à peine mieux. Je n'ai que le message "Le fichier spécifié est introuvable."

    Le for /f indique un travail sur un fichier n'est-il pas?

    Peut-être avec un for /r ce serait mieux puisque je veux modifier les noms de fichiers à l'intérieur du dossier, non?

    J'ai essayé ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @echo off
    setlocal ENABLEDELAYEDEXPANSION
    
    for /r H:\TEMP\N3\ %%a in (*) do (set /a nbf+=1 & ren "%%a" !nbf!.*)
    
    
    endlocal
    Mais le résultat est KO avec le message "Le nom de fichier existe déjà, ou le fichier est introuvable."

  4. #4
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    j'ai 3 fichiers :
    a.txt
    b.txt
    c.txt
    Le contenu de ici .txt est le suivant
    Le lancement du batch sous Windows 10 (cmd)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    set /A nbf=0
    
    setlocal ENABLEDELAYEDEXPANSION
    
    for /f %%a in (ICI.txt) do (
    set /a nbf+=1 
    ren %%a !nbf!.*
    )
    
    endlocal
    me donne ceci en retour (renommage)
    =>
    3 fichiers :
    a.txt
    1.txt
    2.txt

    Note : Un 2ème lancement du batch me retourne
    => Le fichier spécifié est introuvable.
    Ce qui semble normal ...

  5. #5
    Membre averti
    Homme Profil pro
    Testeur en application
    Inscrit en
    Octobre 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Testeur en application
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2015
    Messages : 54
    Par défaut
    Oui, merci, en effet, cette solution renomme partiellement le contenu du dossier. J'ai encore un soucis avec des noms de fichiers contenant des parenthèses, et / ou des espaces double.
    exemple: image (vert) azur cadre rouge 3.jpg

    Pour le fichiers ne contenant pas ces caractéristiques, en effet ça passe très bien.

    J'ai modifié le %%a en "%%a" , mais cela ne suffit pas.

    Une idée ?

  6. #6
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Voir du coté des tokens et décomposition de chaine ?

    L'idée étant de transformer
    image (vert) azur cadre rouge 3.jpg
    en
    "image (vert) azur cadre rouge 3".jpg
    pour pouvoir appliquer le rename


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    set /A nbf=0
    
    setlocal ENABLEDELAYEDEXPANSION
    
    for /f "tokens=1-10 delims=." %%a in (ICI.txt) do (
    set /a nbf+=1 
    ren "%%a".%%b !nbf!.*
    )
    
    endlocal

Discussions similaires

  1. Renommer les fichiers d'un dossier
    Par bamboou9 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/06/2014, 21h55
  2. Réponses: 7
    Dernier message: 16/09/2009, 09h34
  3. Modification d'un fichier texte suivant une liste de mots
    Par nicolas_ser dans le forum Général Python
    Réponses: 10
    Dernier message: 28/07/2009, 23h22
  4. Réponses: 5
    Dernier message: 18/07/2008, 11h28
  5. Réponses: 9
    Dernier message: 18/02/2008, 11h25

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