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 :

Script pour exécuter un autre script dans une arborescence de repertoires. [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mars 2009
    Messages : 89
    Points : 73
    Points
    73
    Par défaut Script pour exécuter un autre script dans une arborescence de repertoires.
    Bonjour,

    Je cherche à parcourir une arborescence de répertoire et dans chaque répertoire exécuter un autre script qui remplace le caractères "^" dans les nom des fichiers en "_".

    c:/Dossiepere contient :
    dossier1 --> dossier11 (avec des fichiers)
    --> dossier111 (avec des fichiers)
    --> dossier112 (avec des fichiers)
    --> dossier12 (avec des fichiers)
    --> dossier121 (avec des fichiers)
    --> dossier122 (avec des fichiers)
    --> fic13 (avec des fichiers)
    --> dossier131 (avec des fichiers)
    --> dossier132 (avec des fichiers)
    --> fic14 (avec des fichiers)
    --> dossier141 (avec des fichiers)
    --> dossier142 (avec des fichiers)
    Je veux récupérer donc la liste des dossiers pour passer en paramètre ce dossier à mon second script qui va lui remplacer le fameux caractère des noms de fichiers qui sont compte-tenu dans ce dossier.

    Je suis grand novice dans le shell windows.
    Mon problème c'est de récupérer dans ma boucle for les noms des sous-répertoires pour les passer à mon script ?

    Merci de votre aide.

    je suis parti de mon premier script qui marche pour un répertoire donné mais ne traite pas les sous-dossiers.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    REM ---les caractères à modifier ----- 
    SET chartoreplace="^"
    SET replacementchar="_"
    REM --- Le repertoire à traiter ----
    SET directory="C:\Documents and Settings\jrdeb\Mes documents\test_excard"
    
    REM --- remise à zéro de mon ficher log ----
    del switchchar.log
    
    REM ---- j execute mon petit programme en java  ----
    REM ---- pour le remplacement des caractères -----
    java -cp jar/medica-1.0.0.jar;. com.medica.file.SwitchChar -d %directory% -i %chartoreplace% -o %replacementchar% >> switchchar.log
    Voici les modifications que j ai effectué pour rendre le script récursif :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    REM ---les caractères à modifier ----- 
    SET chartoreplace="^"
    SET replacementchar="_"
    REM --- Le repertoire à traiter ----
    SET directory="C:\Documents and Settings\jrdeb\Mes documents\test_excard"
    echo off
    
    REM ---- ma boucle for pour passer sur l ensemble des sous dossiers ----
    for /R %directory% %%f in (“.”) do 
    java -cp jar/medica-1.0.0.jar;. com.medica.file.SwitchChar -d %directory% -i %chartoreplace% -o %replacementchar% >> switchchar.log

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut

    Comment remplacer les espaces par des _ dans les noms de fichiers ?

    Dans ton cas, cela fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @echo off
    pushd "C:\Documents and Settings\jrdeb\Mes documents\test_excard"
    type NUL > switchchar.log
    for /R %%I in (*.*) do call :apply "%%~fI"
    popd
    goto :eof
    
    :apply
    set name=%1
    set newname=%name:^=_%
    ren %1 %newname%
    echo %1 =^> %newname% >> switchchar.log
    goto :eof
    Et t'as même encore ton fichier de log, par contre tu peux jeter ton Java, il ne servira plus pour ce cas précis...
    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

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mars 2009
    Messages : 89
    Points : 73
    Points
    73
    Par défaut
    Bonjour Mac Lak,

    Oui ton petit script est tiptop.
    Excuse moi pour ma réactivité un peu lente, mais j'étais en déplacement hier.
    Alors j ai testé le script :
    j ai modifié le répertoire à traiter :
    pushd "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009"

    donc le script parcours bien le répertoire et les sous répertoire.
    quand je regarde les logs il passe sur l ensemble des fichiers génére aussi le nouveau non de fichier mais dans les fichiers dans les répertoire ne sont pas renommés.

    Voici le log :
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\switchchar.log" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\switchchar.log"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\1\FDA\R^^ECG^^F_1^^1_ESCRIB^^010709^^_20090701145904_20090701154802.xml" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\1\FDA\R__ECG__F_1__1_ESCRIB__010709___20090701145904_20090701154802.xml"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\1\FDA\R^^ECG^^F_1^^1_ESCRIB^^010709^^_20090701150343_20090701165146.xml" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\1\FDA\R__ECG__F_1__1_ESCRIB__010709___20090701150343_20090701165146.xml"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\1\FDA\R^^ECG^^F_1^^1_ESCRIB^^010709^^_20090701150435_20090701165626.xml" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\1\FDA\R__ECG__F_1__1_ESCRIB__010709___20090701150435_20090701165626.xml"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\1\FDA\R^^ECG^^F_1^^1_VHO^^008^^_20090630205427_20090701164855.xml" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\1\FDA\R__ECG__F_1__1_VHO__008___20090630205427_20090701164855.xml"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\1\PDF\R^^ECG_1^^1_ESCRIB^^010709^^_20090701145904_20090701154802.pdf" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\1\PDF\R__ECG_1__1_ESCRIB__010709___20090701145904_20090701154802.pdf"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\1\PDF\R^^ECG_1^^1_ESCRIB^^010709^^_20090701150343_20090701165146.pdf" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\1\PDF\R__ECG_1__1_ESCRIB__010709___20090701150343_20090701165146.pdf"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\1\PDF\R^^ECG_1^^1_ESCRIB^^010709^^_20090701150435_20090701165626.pdf" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\1\PDF\R__ECG_1__1_ESCRIB__010709___20090701150435_20090701165626.pdf"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\1\PDF\R^^ECG_1^^1_VHO^^008^^_20090630205427_20090701164855.pdf" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\1\PDF\R__ECG_1__1_VHO__008___20090630205427_20090701164855.pdf"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\2\FDA\R^^ECG^^F_1^^1_ESCRIB^^010709^^_20090701145904_20090701154802.xml" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\2\FDA\R__ECG__F_1__1_ESCRIB__010709___20090701145904_20090701154802.xml"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\2\FDA\R^^ECG^^F_1^^1_ESCRIB^^010709^^_20090701150343_20090701165146.xml" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\2\FDA\R__ECG__F_1__1_ESCRIB__010709___20090701150343_20090701165146.xml"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\2\FDA\R^^ECG^^F_1^^1_ESCRIB^^010709^^_20090701150435_20090701165626.xml" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\2\FDA\R__ECG__F_1__1_ESCRIB__010709___20090701150435_20090701165626.xml"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\2\FDA\R^^ECG^^F_1^^1_VHO^^008^^_20090630205427_20090701164855.xml" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\2\FDA\R__ECG__F_1__1_VHO__008___20090630205427_20090701164855.xml"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\2\PDF\R^^ECG_1^^1_ESCRIB^^010709^^_20090701145904_20090701154802.pdf" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\2\PDF\R__ECG_1__1_ESCRIB__010709___20090701145904_20090701154802.pdf"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\2\PDF\R^^ECG_1^^1_ESCRIB^^010709^^_20090701150343_20090701165146.pdf" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\2\PDF\R__ECG_1__1_ESCRIB__010709___20090701150343_20090701165146.pdf"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\2\PDF\R^^ECG_1^^1_ESCRIB^^010709^^_20090701150435_20090701165626.pdf" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\2\PDF\R__ECG_1__1_ESCRIB__010709___20090701150435_20090701165626.pdf"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\2\PDF\R^^ECG_1^^1_VHO^^008^^_20090630205427_20090701164855.pdf" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\2\PDF\R__ECG_1__1_VHO__008___20090630205427_20090701164855.pdf"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\3\FDA\R^^ECG^^F_1^^1_ESCRIB^^010709^^_20090701145904_20090701154802.xml" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\3\FDA\R__ECG__F_1__1_ESCRIB__010709___20090701145904_20090701154802.xml"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\3\FDA\R^^ECG^^F_1^^1_ESCRIB^^010709^^_20090701150343_20090701165146.xml" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\3\FDA\R__ECG__F_1__1_ESCRIB__010709___20090701150343_20090701165146.xml"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\3\FDA\R^^ECG^^F_1^^1_ESCRIB^^010709^^_20090701150435_20090701165626.xml" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\3\FDA\R__ECG__F_1__1_ESCRIB__010709___20090701150435_20090701165626.xml"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\3\FDA\R^^ECG^^F_1^^1_VHO^^008^^_20090630205427_20090701164855.xml" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\3\FDA\R__ECG__F_1__1_VHO__008___20090630205427_20090701164855.xml"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\3\PDF\R^^ECG_1^^1_ESCRIB^^010709^^_20090701145904_20090701154802.pdf" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\3\PDF\R__ECG_1__1_ESCRIB__010709___20090701145904_20090701154802.pdf"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\3\PDF\R^^ECG_1^^1_ESCRIB^^010709^^_20090701150343_20090701165146.pdf" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\3\PDF\R__ECG_1__1_ESCRIB__010709___20090701150343_20090701165146.pdf"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\3\PDF\R^^ECG_1^^1_ESCRIB^^010709^^_20090701150435_20090701165626.pdf" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\3\PDF\R__ECG_1__1_ESCRIB__010709___20090701150435_20090701165626.pdf"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\3\PDF\R^^ECG_1^^1_VHO^^008^^_20090630205427_20090701164855.pdf" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\3\PDF\R__ECG_1__1_VHO__008___20090630205427_20090701164855.pdf"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\4\FDA\R^^ECG^^F_1^^1_ESCRIB^^010709^^_20090701145904_20090701154802.xml" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\4\FDA\R__ECG__F_1__1_ESCRIB__010709___20090701145904_20090701154802.xml"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\4\FDA\R^^ECG^^F_1^^1_ESCRIB^^010709^^_20090701150343_20090701165146.xml" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\4\FDA\R__ECG__F_1__1_ESCRIB__010709___20090701150343_20090701165146.xml"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\4\FDA\R^^ECG^^F_1^^1_ESCRIB^^010709^^_20090701150435_20090701165626.xml" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\4\FDA\R__ECG__F_1__1_ESCRIB__010709___20090701150435_20090701165626.xml"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\4\FDA\R^^ECG^^F_1^^1_VHO^^008^^_20090630205427_20090701164855.xml" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\4\FDA\R__ECG__F_1__1_VHO__008___20090630205427_20090701164855.xml"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\4\PDF\R^^ECG_1^^1_ESCRIB^^010709^^_20090701145904_20090701154802.pdf" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\4\PDF\R__ECG_1__1_ESCRIB__010709___20090701145904_20090701154802.pdf"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\4\PDF\R^^ECG_1^^1_ESCRIB^^010709^^_20090701150343_20090701165146.pdf" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\4\PDF\R__ECG_1__1_ESCRIB__010709___20090701150343_20090701165146.pdf"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\4\PDF\R^^ECG_1^^1_ESCRIB^^010709^^_20090701150435_20090701165626.pdf" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\4\PDF\R__ECG_1__1_ESCRIB__010709___20090701150435_20090701165626.pdf"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\4\PDF\R^^ECG_1^^1_VHO^^008^^_20090630205427_20090701164855.pdf" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\4\PDF\R__ECG_1__1_VHO__008___20090630205427_20090701164855.pdf"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\5\FDA\R^^ECG^^F_1^^1_ESCRIB^^010709^^_20090701145904_20090701154802.xml" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\5\FDA\R__ECG__F_1__1_ESCRIB__010709___20090701145904_20090701154802.xml"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\5\FDA\R^^ECG^^F_1^^1_ESCRIB^^010709^^_20090701150343_20090701165146.xml" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\5\FDA\R__ECG__F_1__1_ESCRIB__010709___20090701150343_20090701165146.xml"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\5\FDA\R^^ECG^^F_1^^1_ESCRIB^^010709^^_20090701150435_20090701165626.xml" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\5\FDA\R__ECG__F_1__1_ESCRIB__010709___20090701150435_20090701165626.xml"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\5\FDA\R^^ECG^^F_1^^1_VHO^^008^^_20090630205427_20090701164855.xml" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\5\FDA\R__ECG__F_1__1_VHO__008___20090630205427_20090701164855.xml"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\5\FDA\R^^ECG^^F_1^^5_TUB1^^TEST^^_20090701170337_20090701170103.xml" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\5\FDA\R__ECG__F_1__5_TUB1__TEST___20090701170337_20090701170103.xml"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\5\PDF\R^^ECG_1^^1_ESCRIB^^010709^^_20090701145904_20090701154802.pdf" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\5\PDF\R__ECG_1__1_ESCRIB__010709___20090701145904_20090701154802.pdf"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\5\PDF\R^^ECG_1^^1_ESCRIB^^010709^^_20090701150343_20090701165146.pdf" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\5\PDF\R__ECG_1__1_ESCRIB__010709___20090701150343_20090701165146.pdf"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\5\PDF\R^^ECG_1^^1_ESCRIB^^010709^^_20090701150435_20090701165626.pdf" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\5\PDF\R__ECG_1__1_ESCRIB__010709___20090701150435_20090701165626.pdf"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\5\PDF\R^^ECG_1^^1_VHO^^008^^_20090630205427_20090701164855.pdf" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\5\PDF\R__ECG_1__1_VHO__008___20090630205427_20090701164855.pdf"
    "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\5\PDF\R^^ECG_1^^5_TUB1^^TEST^^_20090701170337_20090701170103.pdf" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\5\PDF\R__ECG_1__5_TUB1__TEST___20090701170337_20090701170103.pdf"

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par jano_dave Voir le message
    quand je regarde les logs il passe sur l ensemble des fichiers génére aussi le nouveau non de fichier mais dans les fichiers dans les répertoire ne sont pas renommés.
    Le log me semble tout à fait normal, par rapport à ce que le batch est censé faire...
    Je n'ai pas contre pas pigé la phrase soulignée ci-dessus : tu devais modifier aussi le CONTENU des fichiers et non pas simplement leurs noms ? Ou autre chose ? En tout cas, c'est pas clair, faudrait que tu exposes ton problème clairement.
    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

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mars 2009
    Messages : 89
    Points : 73
    Points
    73
    Par défaut
    Voici durant l execution du script la console affiche ce message voir pièces joint :
    • erreur durant le run.png


    J'ai changé dans la partie "appli" la ligne suivante mais le message est identique :
    en ni
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /R %%I in (*.*) do call :apply "%%~fI"
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /R %%I in (*.*) do call :apply "%%~I"
    Images attachées Images attachées  

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mars 2009
    Messages : 89
    Points : 73
    Points
    73
    Par défaut
    nos messages se sont croisés.

    Oui ma phrase n'était pas claire du tout !

    Dans les logs c'est exactement ce que je veux faire. c'est à dire :
    passer sur l'ensemble des fichier contenu dans le répertoire à traiter et ses sous-répertoire.

    et pour chaque fichier trouvé test s'il y a le caractère "^" dans le nom du fichier et le remplacer par le caractère "_".

    donc ton script fait bien ça à la lecture des logs.

    Par contre quand je regarde le répertoire à traiter et les sous répertoire les fichiers n ont pas été renommé. donc je teste avec mes petits moyens à résoudre ce petit problème.

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Etrange... Essaie en remplaçant, dans le batch d'origine que je t'ai donné, le "ren" par un "move", et dis-moi si ça résoud ton problème.

    Si ça ne marche toujours pas : enlève le "@echo off" en début de batch, regarde le log console produit (pas le fichier, celui à l'écran !) et quelle est la commande qui a généré l'erreur : ce n'est pas normal qu'une commande soit incorrecte, déjà, et encore moins qu'elle demande à appuyer sur une touche !

    Pour avoir ce log, si ton batch s'appelle "truc.bat", tapes en ligne de commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    truc > truc.log.txt 2>&1
    Si le programme ne te rends pas la main, appuie sur une touche (il attends peut-être une touche justement), jusqu'à ce qu'il revienne enfin au prompt. Poste ensuite le TXT produit.
    Cela va être un gros fichier contenant toutes les lignes exécutées par le script, vérifie avant de l'envoyer quand même qu'il contient bien le texte "La syntaxe de la commande est incorrecte" stp.
    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

  8. #8
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    Salut,

    ça ne fonctionne pas pour 2 raisons essentielles:

    1) syntaxe incorrecte:

    la syntaxe de la commande REN/RENAME est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    REN chemin nom_du_fichier et non pas Ren Chemin\nom_fichier Chemin\nom_fichier
    2) sous-routine indisponsable


    l'utilisation du caractère caret "^" comme paramètre de la fonction CALL provoque son clônage "^^" si celui-ci est
    encadré par des guillemets.




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    call :sfc "^un^nom^de^fichier^bizarre.txt"
    goro:eof
    
    :sfc
    echo %1
    REM # le paramètre %1 s'étend à: "^^un^^nom^^de^^fichier^^bizarre.txt" #

    exemple 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    call :sfc "^un^nom^de^fichier^bizarre.txt"
    goro:eof
    
    :sfc
    echo "%~1"
    REM # le paramètre "%~1" s'étend à: "^^un^^nom^^de^^fichier^^bizarre.txt" #

    pour avoir le bon resultat il faut enlever les guillemets:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    call :sfc "^un^nom^de^fichier^bizarre.txt"
    goro:eof
    
    :sfc
    echo %~1
    REM # le paramètre %~1 s'étend à: ^un^nom^de^fichier^bizarre.txt #
    ici le problème sera réglé, mais lorsqu'il s'agit d'un paramètre comportant des espaces, cette
    solution n'auura plus l'effet souhaité:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    call :sfc "^un ^ nom ^ de ^ fichier ^ bizarre.txt"
    goro:eof
    
    :sfc
    echo. > %~1 
    REM # le fichier créer: "^un" #


    on peut contourner ce problème en utilisant ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    call :sfc "^un ^ nom ^ de ^ fichier ^ bizarre.txt"
    goro:eof
    
    :sfc
    set var=%~1
    REM # On créer une variable et on lui affecte le contenu du paramètre %~1 #
    REM # on utilise %~1 plutôt que %1
    echo. > "%var%"
    REM # les guillemets doivent être présents #


    en gros: la commande REN va chercher un nom "mon^^fichier.txt" qui est en réalité "mon^fichier.txt" ==> impossible de le renommer puisqu'il n'existe pas .


    solution pour ce script:

    ou bien mettre le chemin et le nom du fichier dans des variables dans la boucle FOR, puis les appeler depuis le corps du sous-programme:

    ##############################################

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @echo off
    pushd "D:\Documents and Settings\test\walid"
    type NUL > switchchar.log
    for /R %%I in (*.*) do set f="%%~nxI"&set p="%%~fI"&call :apply
    popd
    pause
    goto :eof
    
    :apply
    set f=%f:^=_%
    ren %p% %f%
    echo %p% =^> %f% >> switchchar.log
    goto :eof
    ############################################

    ou bien mettre les paramètres du sous-programme dans des variables


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    @echo off
    pushd "D:\Documents and Settings\test\walid"
    type NUL > switchchar.log
    for /R %%I in (*.*) do call :apply "%%~nxI" "%%~fI"
    popd
    pause
    goto :eof
    
    :apply
    set name=%~1
    set .path=%~2
    set name=%name:^=_%
    ren "%.path%" "%name%"
    echo "%.path%" =^> "%name%" >> switchchar.log
    goto :eof
    #############################################

    ou bien utiliser les paramètres étendu pour extraire de la variable "%%I"
    tout ce qu'on veux...bien entendu il faut aussi ne pas utiliser des guillemets
    dans les paramètres: "%~1"
    Code : 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
    
    @echo off
    pushd "D:\Documents and Settings\test\walid"
    type NUL > switchchar.log
    for /R %%I in (*.*) do call :apply "%%I"
    popd
    pause
    goto :eof
    
    :apply
    set name=%~nx1
    set .path=%~f1
    set name=%name:^=_%
    ren "%.path%" "%name%"
    echo "%.path%" =^> "%name%" >> switchchar.log
    goto :eof
    aussi tu peux utiliser une simple boucle FOR sans appel de fonction

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mars 2009
    Messages : 89
    Points : 73
    Points
    73
    Par défaut
    voici un extrait du log :

    il trouve un fichier introuvable ? c'est pourtant les bon nom de fichier ?

    en pièce joint le log

    je te donne le script que j ai fait tourner :
    Code : 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
    pushd "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009"
    type NUL > switchchar.log
    for /R %%I in (*.*) do call :apply "%%~fI" 
    pause
    popd
    rempl_char > rempl_char.log.txt 2>&1
    goto :eof
    
    
    :apply
    set name=%1
    set newname=%name:^=_%
    ren %1 %newname%
    echo %1 =^> %newname% >> switchchar.log
    goto :eof
    C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009>call :apply "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\1\FDA\R^ECG^F_1^1_ESCRIB^010709^_20090701145904_20090701154802.xml"

    C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009>set name="C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\1\FDA\R^^ECG^^F_1^^1_ESCRIB^^010709^^_20090701145904_20090701154802.xml"

    C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009>set newname="C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\1\FDA\R__ECG__F_1__1_ESCRIB__010709___20090701145904_20090701154802.xml"

    C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009>ren "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\1\FDA\R^^ECG^^F_1^^1_ESCRIB^^010709^^_20090701145904_20090701154802.xml" "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\1\FDA\R__ECG__F_1__1_ESCRIB__010709___20090701145904_20090701154802.xml"
    Le fichier sp‚cifi‚ est introuvable.

    C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009>echo "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\1\FDA\R^^ECG^^F_1^^1_ESCRIB^^010709^^_20090701145904_20090701154802.xml" => "C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009\1\FDA\R__ECG__F_1__1_ESCRIB__010709___20090701145904_20090701154802.xml" 1>>switchchar.log

    C:\Documents and Settings\jrdeb\Mes documents\4SC-201-1-2009>goto :eof
    Fichiers attachés Fichiers attachés

  10. #10
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    si t'as bien regardé le post d'avant t'aura trouvé la cause et la solution à ton problème

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mars 2009
    Messages : 89
    Points : 73
    Points
    73
    Par défaut
    oui j ai regardé ton post très instructif !

    Mon post c'était croisé avec le tien.

    Je viens de tester ça marche !! houra !!

    Merci à vous deux pour votre aide !

  12. #12
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    çà reste toujours le code de Mac LAK pas le mien

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par I'm_HERE Voir le message
    1) syntaxe incorrecte:
    Le "move" résoudra le souci dans ce cas.

    Citation Envoyé par I'm_HERE Voir le message
    aussi tu peux utiliser une simple boucle FOR sans appel de fonction
    Le souci était l'expansion différée qui est parfois pénible sur les substitutions, d'où la sous-routine.
    Merci en tout cas pour le coup de la double expansion, je ne le connaissais pas ce coup-là... Bon, j'avoue aussi ne pas avoir de "^" dans mes noms de fichiers en général !

    Citation Envoyé par jano_dave Voir le message
    il trouve un fichier introuvable ? c'est pourtant les bon nom de fichier ?
    Effectivement, I'm_HERE a raison : c'est un "ren" qui cause l'erreur, sans parler du fait que les "^" disparaissent.
    Par contre, il ne faut PAS appeler "rempl_char > rempl_char.log.txt 2>&1" au sein de ton batch !!! Tu vas provoquer des problèmes, il ne faut taper cette ligne qu'à l'invite de commande !

    Le dernier batch donné par I'm_HERE devrait fonctionner correctement.


    EDIT : C'est la valse des posts croisés, sur ce topic !!
    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

  14. #14
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    Le dernier batch donné par I'm_HERE devrait fonctionner correctement.
    est-ce que les 2 autres codes ne fonctionnent pas chez toi car chez moi ils fonctionnent bien ?!


    et pour finir la valse voici un code sans sous-routine:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @echo off
    
    setlocal enabledelayedexpansion
    
    set source=D:\Documents and Settings\test\walid
    for /r "%source%" %%a in (*) do (
      set "file=%%~nxa"
      set file=!file:^^=_!
      ren "%%~dpa!file:_=^!" "!file!"  
      echo "%%~dpa!file:_=^!" "!file!" >> "%source%\log.log"
    )
    
    pause

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par I'm_HERE Voir le message
    est-ce que les 2 autres codes ne fonctionnent car chez moi ils fonctionnent bien ?!
    A part une coquille "call call" dans le premier, je pense qu'ils fonctionnement, c'est pas le souci.

    C'est juste que le dernier me semble être le plus "simple" à comprendre pour l'OP, et donc plus facilement modifiable au besoin, tout simplement.
    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

  16. #16
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    ah j'ai pas vu ce call call .

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mars 2009
    Messages : 89
    Points : 73
    Points
    73
    Par défaut
    oui il marche tous.
    j ai choisi pour ma part cette solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    @echo off
    pushd "D:\Excard\data"
    type NUL > switchchar.log
    for /R %%I in (*.*) do call :apply "%%~nxI" "%%~fI"
    popd
    goto :eof
    
    :apply
    set name=%~1
    set .path=%~2
    set name=%name:^=_%
    ren "%.path%" "%name%"
    echo "%.path%" =^> "%name%" >> switchchar.log
    goto :eof
    Ne serait il pas possible de rajouter dans les log la date et l heure pour chaque ligne, et de garder un historique sur 30 jours.
    en lançant chaque jour un autre script qui supprime les lignes de plus de 30 jours.

    Sinon je me penche sur les cours proposés sur le site et les faqs il y a vraiment beaucoup de choses de possible avec le batch.

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

Discussions similaires

  1. [MySQL] Script Php pour récupere n° de semaine dans une table
    Par frederic_dev dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 05/01/2011, 09h48
  2. Réponses: 10
    Dernier message: 12/05/2010, 11h10
  3. Réponses: 4
    Dernier message: 29/06/2009, 12h02
  4. [BATCH]script pour encoder des fichiers dans une arborescence
    Par ashgan44 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 11/05/2009, 15h04
  5. script pour naviguer dans une arborescence
    Par nora2311 dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 03/10/2008, 15h22

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