2008-10-09 9 views
4

J'ai un répertoire avec plusieurs sous-répertoires avec des fichiers.
Comment puis-je copier tous les fichiers dans les sous-répertoires vers un nouvel emplacement?
Comment copier des fichiers avec Windows Batch?

Edit: Je ne veux pas copier les répertoires, les fichiers seulement ...

Comme cela est encore sur XP, j'ai choisi la solution ci-dessous:

for /D %S IN ("src\*.*") DO @COPY "%S\" "dest\" 

Merci!

Répondre

6

Ok. Avec votre édition que vous ne voulez pas dit la structure de répertoire, je pense que vous allez vouloir utiliser quelque chose comme ceci:

for /F "usebackq" %s IN (`DIR /B /S /A-D SrcDir`) DO @(
    XCOPY %s DestDir\%~nxs 
) 
+0

Ahhh me fait envie de bash! trouver SrcDir -type f -exec cp {} DestDir \; – h4unt3r

+0

Ne pas oublier les guillemets. – zirbel

3

La commande Xcopy devrait aider ici.

XCOPY /E SrcDir\*.* DestDir\ 

Ou si vous ne voulez pas des fichiers dans SrcDir, seulement les sous-répertoires, vous pouvez utiliser XCOPY conjointement avec la commande FOR:

FOR /D %s IN (SrcDir\*) DO @XCOPY /E %s DestDir\%~ns\ 
0

Si vous voulez garder la même structure de dossiers à l'autre bout, des sons aussi simple que xCOPY

xcopy c: \ old \ * * d:. \ new \/s

Utilisez/e au lieu de/s si vous souhaitez copier des répertoires vides également.

2

robocopy "c:\source" "c:\destination" /E

+0

RoboCopy est un excellent utilitaire et est très robuste. Si c'est une question critique, robocopy est probablement votre option principale. –

+0

En outre, xcopy est obsolète sur Vista en faveur de robocopy –

+0

Ha ha ha, je ne suis pas trop inquiet à propos de xcopy aller n'importe où de sitôt. Toujours, bon point. –

1

Si je vous ai bien compris, vous avez un grand arbre de répertoire et que vous voulez tous les fichiers à l'intérieur pour être dans un répertoire. Si c'est exact, je peux le faire en deux lignes:

dir /s /b "yourSourceDirectoryTreeHere" > filelist.txt 
for /f %f in (filelist.txt) do @copy %f "yourDestinationDirHere" 

Dans un fichier batch par rapport à la ligne de commande de changement% f à %% f

+0

J'aime votre solution, mais la mienne le fait en une ligne, sans un fichier temporaire. Merci! – Nescio

+0

Est-ce que le vôtre fait l'arbre entier? Je ne pensais pas que c'était le cas, mais je suppose que je vais devoir l'essayer. –

+0

La réponse d'Eric ci-dessous semble être une version d'une ligne de ma commande à deux lignes, sans fichier temporaire. –

0
for /D %S IN ("src\*.*") DO @COPY "%S\" "dest\" 
+0

Si cela fonctionne bien pour vous. Un problème avec cela cependant, c'est que si vous avez des sous-répertoires sous src avec les fichiers que vous voulez, votre commande ne les obtiendra pas (autant que je sache). J'ai ajouté une autre réponse après avoir mieux compris vos besoins. –

Questions connexes