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.
A voir également:

10 réponses

Mich92
 
Cette fois cela marche à merveille !!
MERCI BEAUCOUP pour ton aide. Cela va m'être d'un très grande utilité.
2
cchristian Messages postés 921 Date d'inscription   Statut Membre Dernière intervention   131
 
AVEC PLAISIR, bon courage, peut-être à bientôt sur CCM.
-1
Mich92 > cchristian Messages postés 921 Date d'inscription   Statut Membre Dernière intervention  
 
============= 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
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
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mich92
 
Je vais essayer... Merci Cchristian !
0
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
Utilisateur anonyme
 
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
Utilisateur anonyme
 
alors il faut utiliser autre chose que DOS
-1
cchristian Messages postés 921 Date d'inscription   Statut Membre Dernière intervention   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
cchristian Messages postés 921 Date d'inscription   Statut Membre Dernière intervention   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