Copier fichiers dans 1 répertoire (avecMSDOS)

[Résolu/Fermé]
Signaler
-
 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.

10 réponses

Cette fois cela marche à merveille !!
MERCI BEAUCOUP pour ton aide. Cela va m'être d'un très grande utilité.
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
129
AVEC PLAISIR, bon courage, peut-être à bientôt sur CCM.
>
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012

============= 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 ;) )
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,...) ?
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é.
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é.
Je vais essayer... Merci Cchristian !
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...

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.

alors il faut utiliser autre chose que DOS
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
129
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 :
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
129
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"