Archivo por lotes para copiar directorios de forma recursiva


Respuestas:


178

Busque en xcopy , que copiará archivos y subdirectorios de forma recursiva.

Hay ejemplos, 2/3 hacia abajo en la página. De particular utilidad es:

Para copiar todos los archivos y subdirectorios (incluidos los subdirectorios vacíos) de la unidad A a la unidad B, escriba:

xcopy a: b: /s /e


16
Probablemente desee que se incluya también el indicador / y para "Suprime la solicitud de confirmación de que desea sobrescribir un archivo de destino existente".
— Matthew Lock

11
'xcopy' no es una buena idea porque son famosos por su error de memoria insuficiente . Intente usar 'robocopy'
— Rahul

6
@Rahul Hmm ¿de verdad? Nunca he visto eso, pero xcopy ciertamente ha existido desde la Edad Media. Probablemente también podría hacerlo Copy-Item -Recurseen PowerShell.
— lc.

1
Desafortunadamente, sí, este comportamiento es muy común :). Si ha visto que esto sucede de forma recurrente, especialmente si desea copiar una gran cantidad de datos, como gigas de datos.
— Rahul

10
Esto dice que xcopy ha quedado obsoleto y que debería usarse robocopy.
— Mike HR

71

Después de leer los comentarios de la respuesta aceptada, probé el comando robocopy , que funcionó para mí (usando el símbolo del sistema estándar de Windows 7 64 bits SP 1):

robocopy source_dir dest_dir /s /e

5
¡Nunca supe que 'robocopy' es un comando incorporado en Windows 7! Gracias por la respuesta, muy útil y poderosa :)
— Anmol Saraf

5
¿No /Eimplica /S? copy subdirectories, including Empty ones.
— mbomb007

4
Mmmm /Sy /Eparece implicar cosas opuestas según la /?ayuda de robocopy - s es "no vacíos" e es "vacíos". Creo que deberías elegir uno.
— Stuart Brock

1
Para la mayoría de los usuarios, creo que es suficiente hacer / e (incluir directorios vacíos).
— phsource

3
Tenga en cuenta que robocopydevuelve un código de salida de 1 si uno o más archivos se copiaron correctamente.
— dougnorton

15

Puede escribir un algoritmo recursivo en Batch que le brinde un control exacto de lo que hace en cada subdirectorio anidado:

@echo off
call :treeProcess
goto :eof

:treeProcess
rem Do whatever you want here over the files of this subdir, for example:
copy *.* C:\dest\dir
for /D %%d in (*) do (
    cd %%d
    call :treeProcess
    cd ..
)
exit /b

¿Archivo por lotes de Windows recorriendo directorios para procesar archivos?


4
Gran idea, pero ¿su programa no copia todos los archivos de los directorios de origen en un único directorio de destino sin preservar la jerarquía de carpetas?
— Jean-Francois T.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.