Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Batch] ~ Affectation de variable dans un "for"

Sujet résolu
    27 février 2019 à 14:22:29

    #Problème résolu (cf EDIT2 plus bas)

    Bonjour,

    Pour le travail je dois traiter des grandes quantités d'images sorties tout droit d'un téléphone. Elles ont toutes le format "IMG_###.jpg" et j'aimerais automatiser en Batch le renommage de ces fichiers sous la forme "NouveauNom_NuméroDuFichier.jpg". L'idée est de laisser l'utilisateur renseigner le nom qu'il souhaite voir apparaître sur les fichiers (NouveauNom) et faire apparaître un indice incrémental qui commence à 1 et augmente au fur et à mesure des fichiers traités pendant l'exécution.

    Pour le moment j'ai bidouillé un code qui me paraît correct et qui pourtant ne me sort pas les résultats attendus... :'(

    Je vous laisse y jeter un oeil et je suis preneur de toute aide ^^

    Merci d'avance

    setlocal enableDelayedExpansion
    ::@echo off
    
    title Rename_Me
    color 0E
    
    cd A_traiter
    
    echo Bienvenue, Rename_Me est pret a fonctionner...
    echo.  
    :: set /p nouv_nom=Saisissez le nouveau nom que vous voulez attribuer a vos fichiers (puis appuyez sur Entree ): 
    set nouv_nom=test
    echo.
    
    set /a counter=1
    set extension=
    set nouv_nom_complet=
    
    for %%i in (*) do (
    
    echo %%~xi
    set extension=%%~xi
    echo !extension!
    
    set /a nouv_nom_complet=%nouv_nom%_!%counter%!!%extension%!
    echo %nouv_nom_complet%
    
    
    rename "%%i" "%nouv_nom_complet%"
    
    set /a counter+=1
    echo !counter!
    
    )
    
    echo.
    echo Le traitement de vos fichiers est fini.
    echo Fin du programme
    echo.
    pause


    #EDIT : j'ai oublié de rajouter un extrait du résultat lorsque je lui demande de traiter les fichiers du dossier "A_traiter" :

    >(echo .txt
     set extension=.txt
    echo !extension!
     set /a nouv_nom_complet=test_!1!!!
     echo
     rename "Nouveau document texte.txt" ""
     set /a counter+=1
     echo !counter!
    )
    .txt
    .txt
    Commande ECHO activée.
    Le nom de fichier existe déjà, ou le fichier
    est introuvable.
    4


    #EDIT2:

    C'est bon j'ai réussi ^^' 

    Le problème se situait au niveau des balises affectées aux variables "counter" et "extension". Je m'étais emmêlé entre les "%" et les "!" :p

    Je mets mon nouveau code qui fonctionne au cas où ça puisse aider qqn ;)

    setlocal enableDelayedExpansion
    @echo off
    
    title Rename_Me
    color 0E
    
    cd A_traiter
    
    echo Bienvenue, Rename_Me est pret a fonctionner...
    echo.  
    set /p nouv_nom=Saisissez le nouveau nom que vous voulez attribuer a vos fichiers (puis appuyez sur Entree ): 
    echo.
    
    set /a counter=1
    set extension=
    set nouv_nom_complet=
    
    for %%i in (*) do (
    
    echo %%~xi
    set extension=%%~xi
    echo !extension!
    
    set nouv_nom_complet=%nouv_nom%_!counter!!extension!
    echo !nouv_nom_complet!
    
    
    rename "%%i" "%!nouv_nom_complet!"
    
    set /a counter+=1
    echo !counter!
    
    )
    
    echo.
    echo Le traitement de vos fichiers est fini.
    echo Fin du programme
    echo.
    pause

    -
    Edité par Charloth 27 février 2019 à 14:47:04

    • Partager sur Facebook
    • Partager sur Twitter

    [Batch] ~ Affectation de variable dans un "for"

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown