Copier fichiers dans 1 répertoire (avecMSDOS)

Résolu
Mich92 -  
 Mich92 -
Bonjour à toutes et à tous,

Je souhaites Copier tous les fichiers contenus dans une arborescence dont le répertoire racine est "DossierSource" dans un autre répertoire appelé "DossierCible".

Exemple :
Voici mon arborescence :

DossierSource
---Fichier01
---Fichier02
---Répertoire1
------Fichier11
------Fichier12
---Répertoire2
------Fichier21
------Fichier22

Voici ce que je souhaite obtenir :

DossierCible
---Fichier01
---Fichier02
---Fichier11
---Fichier12
---Fichier21
---Fichier22

J'ai essayé la commande suivante :
COPY "C:\Documents and Settings\Michel\Bureau\DossierSource\*" "C:\Documents and Settings\Michel\Bureau\DossierCible" /s
mais voici ce que j'obtient :
DossierCible
---Fichier01
---Fichier02
---Répertoire1
------Fichier11
------Fichier12
---Répertoire2
------Fichier21
------Fichier22

Existe-t-il une commande simple qui permette de faire cela ?
Quelqu'un peut-il me répondre rapidement ?

Merci d'avance.
Configuration: Windows XP
Internet Explorer 6.0

10 réponses

  1. Mich92
     
    Cette fois cela marche à merveille !!
    MERCI BEAUCOUP pour ton aide. Cela va m'être d'un très grande utilité.
    2
    1. cchristian Messages postés 928 Statut Membre 131
       
      AVEC PLAISIR, bon courage, peut-être à bientôt sur CCM.
      -1
      1. Mich92 > cchristian Messages postés 928 Statut Membre
         
        ============= RESUME =============

        Voici mon arborescence :

        DossierSource
        ---Fichier01
        ---Fichier02
        ---Répertoire1
        ---------Répertoire2
        ------------Fichier121
        ------------Fichier122
        ---------Fichier11
        ---Répertoire2
        ------Fichier21
        ------Fichier22

        Voici ce que je souhaite obtenir :

        DossierCible
        ---Fichier01
        ---Fichier02
        ---Fichier121
        ---Fichier122
        ---Fichier11
        ---Fichier21
        ---Fichier22

        Mon Programme (qui marche !) :

        SETLOCAL ENABLEdelayedExpansion
        SETLOCAL ENABLEextensions
        CLS

        rem DOSSIER CIBLE
        SET "param_0=C:\Documents and Settings\Christian\Mes documents\b1\"

        rem DOSSIER SOURCE (répertoire générique )
        SET "param_1=C:\Documents and Settings\Christian\Mes documents\a1\"

        rem Selection sur extension possible.
        SET "param_2=*"

        FOR /R "%param_1%" %%F IN (*.%param_2%) DO (
        SET "nom_ext=%%~nxF"
        rem Pour tracer en test ECHO !nom_ext!
        SET "param_0=%param_0%!nom_ext!"
        rem MOVE /Y "%%F" "!param_0!" )
        COPY "%%F" /A "!param_0!" /A )

        Fonctionnalités que j'aimerai ajouter :

        dans le dossier cible : nom du fichier doit être = "(nom du dossier)" + " - " + "nom du fichier"

        ex
        DossierCible
        ---"Fichier01"
        ---"Fichier02"
        ---"(Répertoire1) - (Répertoire2) - Fichier121"
        ---"(Répertoire1) - (Répertoire2) - Fichier122"
        ---"(Répertoire2) - Fichier21"
        ---"(Répertoire2) - Fichier21"

        Merci à celui qui me répondra.
        (bjr à Cchristian ;) )
        0
  2. Mich92
     
    giheller,

    Comment faire cela de façon générique sachant qu'en réalité l'arborescence est beaucoup plus importante (répertoires, sous-répertoires, sous-sous-répertoires,...) ?
    0
  3. Mich92
     
    De plus, l'arborescence est susceptible de bouger (suppressions/ajout de répertoires, suppression/ajout de sous-répertoires, suppression/ajout de fichiers,...) --> d'où l'idée de généricité.
    0
  4. Mich92
     
    De plus, l'arborescence est susceptible de bouger (ajout/suppression de répertoires, ajout/suppression de sous-répertoires, ajout/suppression de sous-sous-répertoires, ajout/suppression de fichiers,...) --> d'où l'idée de généricité.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Mich92
     
    Je vais essayer... Merci Cchristian !
    0
  7. Mich92
     
    J'ai lancé ce programme et cela marche très bien sur des fichiers textes. Cependant cela ne fonctionnent pas sur les images. En effet, les images sont copiées mais il n'est pas possible de les lire...
    0
  8. giheller
     
    Bonjour,
    vous lui demandez de tout copier alors il copie tout.
    pour obtenir le résultat escompté il faut faire plusieurs commandes puisque vous ne souhaitez pas garder les répertoires.
    -1
  9. giheller
     
    alors il faut utiliser autre chose que DOS
    -1
  10. cchristian Messages postés 928 Statut Membre 131
     
    Bonsoir,

    Essaie cela :

    SETLOCAL ENABLEdelayedExpansion
    SETLOCAL ENABLEextensions
            CLS
    
    rem DOSSIER CIBLE
            SET "param_0=C:\Documents and Settings\Christian\Mes documents\b1\"
    
    rem DOSSIER SOURCE (répertoire générique )
            SET "param_1=C:\Documents and Settings\Christian\Mes documents\a1\"
    
    rem Selection sur extension possible.
            SET "param_2=*"
    
            FOR              /R   "%param_1%"   %%F  IN  (*.%param_2%) DO  (
                  SET               "nom_ext=%%~nxF"
    rem Pour tracer en test    ECHO  !nom_ext!
                  SET "param_0=%param_0%!nom_ext!"
    rem              MOVE  /Y    "%%F"     "!param_0!"                               )
                  COPY   "%%F" /A "!param_0!"  /A                             )


    NB. Les commandes :
                  SET               "nom_ext=%%~nxF"
    rem Pour tracer en test    ECHO  !nom_ext!
                  SET "param_0=%param_0%!nom_ext!"

    ne sont vraisemblablement pas nécessaires, elles permettent la récupération du nom et de l'extension du fichier à déplacer. Je crois me rappeler que la commande MOVE récupère ce nom s'il n'est pas spécifié dans le dossier cible. Je n'ai pas testé sans elles.

    Par contre si c'est un COPY
                  COPY   "%%F"  /A   "!param_0!"  /A                     )
    que tu souhaites faire elles sont nécessaires :
    -1
  11. cchristian Messages postés 928 Statut Membre 131
     
    Bonjour,

    Pour des images essaie en remplaçant /A par /B. (B=Binaire)

    COPY "%%F" /A "!param_0!" /A )

    remplacé par

    COPY "%%F" /B "!param_0!" /B )

    Tu vas probablement devoir identifier les deux cas en ajoutant un test sur l'extension.

    --------------------------------------------------------------------------------------------
    P.S. Pour extraire l'extension :

    SET "ext=%%~xF"
    -1