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 :

Insertion de texte dans un nom de fichier lors d'un copy [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 99
    Par défaut Insertion de texte dans un nom de fichier lors d'un copy
    Bonjour,
    Je dois copier des fichiers situés dans différents répertoire vers un répertoire unique en prenant soin d'insérer le nom du répertoire source dans le nom du fichier destination (+ modification de l'extension .htm en .html.twig).
    Exemple : DOSSIER1 contient "toto.htm" --> après copie il s’appellera "DOSSIER1 toto.html.twig"

    Pour le moment, en faisant :
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    copy /Y C:\SOURCE\*.htm C:\DESTINATION\*l.twig
    j'obtiens bien tous mes fichiers avec la nouvelle extension.

    Mais lorsque je tente l'insertion du nom de repertoire en faisant :
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    copy /Y C:\SOURCE\*.htm "C:\DESTINATION\SOURCE *l.twig"
    le début du nom de fichier d'origine est écrasé... (ex: "abcdefghijklm.htm" devient "SOURCE hijklm.html.twig")

    Quelqu'un aurait-il une solution

  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Billets dans le blog
    2
    Par défaut
    Fait un test avec le script suivant

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @echo off
     
    for /r "C:\SOURCE" %%a in (*.htm) do (
      copy /Y "%%~dpnxa" "C:\DESTINATION\%%~pa %%~nal.twig"
    )
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 99
    Par défaut
    Bonjour InitScreen,

    ça ne fonctionne pas ; j'ai retiré le echo off et rajouté un pause et voici le résultat de l'exécution du batch (qui se trouve sur mon bureau):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    C:\Users\monUser\Desktop>(copy /Y "C:\SOURCE\abcdefghijklm.htm" "C:\DESTINATION\\SOURCE\ abcdefghijklml.twig" )
    Le chemin d'accès spécifié est introuvable.
    0 fichier(s) copié(s).
    J'ai mis en rouge ce que je pense qui pose le problème d'exécution.
    Merci d'avance

  4. #4
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Billets dans le blog
    2
    Par défaut
    Comme ca ça devrait marcher cependant cela ne fonctionnera que si tu n'as qu'un niveau de répertoire

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    @echo off
     
    for /r "C:\SOURCE" %%a in (*.htm) do (
      set "currentpath=%%~pa"
      copy /Y "%%~dpnxa" "C:\DESTINATION\%currentpath:~1,-1% %%~nal.twig"
    )
    pause

    sinon tu peux essayer quelque chose comme ça si tu as plusieurs niveaux de répertoire

    Code bat : 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
    setlocal enabledelayedexpansion
     
    for /r "C:\SOURCE" %%a in (*.htm) do (
      for /f "tokens=1-26 delims=\" %%A in ("%%~pa") do (
        for %%b in (%%A,%%B,%%C,%%D,%%E,%%F,%%G,%%H,%%I,%%J,%%K,%%L,%%M,%%O,%%P,%%Q,%%R,%%S,%%T,%%U,%%V,%%W,%%X,%%Y,%%Z) do (
    		if not "%%b"=="" (
    		  set "tmp=%%b"
    		) else (
    		  set "currentpath=!tmp!"
    		)
    	)
      )
      copy /Y "%%~dpnxa" "C:\DESTINATION\!currentpath! %%~nal.twig"
    )
    pause
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 99
    Par défaut
    Re-bonjour,

    J'ai bien réécris votre code (le premier avec un seul niveau de répertoire) à la lettre, mais j'ai le message suivant (qui disparait presque instantanément, j'ai du utiliser l'impr-écran pour réussir à le lire ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    L'utilisation de l'opérateur chemin dans la substitution
    de paramètres de commande n'est pas valide : %~nal.twig"
    
    Pour les formats valides, entrez CALL .? ou FOR /?
    La syntaxe de la commande n'est pas correcte.
    
    C:\Users\monUser\Desktop>      copy /Y "%~dpnxa" "C:\DESTINATION\~1,-1rentpath:~1,-1%
     %%~nal.twig"

  6. #6
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Billets dans le blog
    2
    Par défaut
    Ca doit venir de l'expansion retardé des variables, si c'est pas ça, je vois pas

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @echo off
    setlocal enabledelayedexpansion
     
    for /r "C:\SOURCE" %%a in (*.htm) do (
      set "currentpath=%%~pa"
      copy /Y "%%~dpnxa" "C:\DESTINATION\!currentpath:~1,-1! %%~nal.twig"
    )
    pause
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/02/2014, 21h48
  2. Lire dans plusieurs fichiers texte selon le nom de fichier
    Par AJ_ing dans le forum Shell et commandes GNU
    Réponses: 11
    Dernier message: 20/06/2012, 09h43
  3. Norme d'insertion/affichage texte dans une DB ?
    Par kiwikiller dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 21/12/2005, 11h53
  4. Réponses: 17
    Dernier message: 12/04/2005, 15h28

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