¿Cómo copiar una estructura de directorio sin copiar archivos?

47

Tengo una carpeta con muchas subcarpetas y archivos en ellas. ¿Hay alguna forma de copiar la estructura de directorios de carpetas y subcarpetas sin copiar los archivos que contienen, usando cmd o powershell?

Torre
fuente

Respuestas:

45

Si desea copiar carpetas vacías también.

xcopy C: \ Carpetas D: \ Carpetas / t / e

Michael Mantion
fuente
1
correcto, también /edebe usarse.
1
XCOPY Build in Powershell por defecto y funciona perfectamente.
BenCes
29

Sip. XCOPY

XCopy source {destination}  /t

ejemplo

xcopy C:\Folders D:\Folders /t

Puede encontrar más información sobre xcopy aquí http://ss64.com/nt/xcopy.html

BroScience
fuente
55
Debe agregar /epara copiar también carpetas vacías
18

Aunque XCOPY todavía funciona, Windows Vista y versiones posteriores incluyen ROBOCOPY, que tiene más funciones. La sintaxis general para copiar un árbol de carpetas (incluidas las carpetas vacías) sin los archivos es:

robocopy "A:\Source folder" "B:\Destination folder" /e /xf *

Theodore
fuente
3

Método de PowerShell que no requiere copiar cada archivo y luego eliminarlos:

Copy-Item -LiteralPath '.\source' -Destination 'C:\path\to\copy' -Recurse -Filter {PSIsContainer -eq $true}

O más sucintamente:

copy .\source C:\path\to\copy -r -fi PSIsContainer

El único truco interesante aquí es el filtrado en la PSIsContainerpropiedad, que es cierto para directorios pero no para archivos.

Ben N
fuente
¡Esto también es súper rápido!
Regmi
1

Mire la aplicación 47folders, una herramienta gratuita y útil de Windows, hace exactamente lo que necesita a través de una buena GUI. ingrese la descripción de la imagen aquí

ADVERTENCIA: El enlace anterior ( http://47foldersapp.com/ ) ahora (noviembre de 2017) conduce a la publicidad de ropa. La última buena copia del Archivo de Internet está aquí . El software aún puede estar disponible en sitios de descarga de software gratuito como este .

andymcgregor
fuente
0

Probablemente haya una mejor solución, pero vería estas:

  • Copie todo, luego vacíe las carpetas con un script.

  • Haga un script que copie todo si no tiene extensión. A menos que tenga archivos sin una extensión en las carpetas, que no debería, debería funcionar, porque, bueno. Las carpetas no tienen extensiones. Algo que se vería así en pseudocódigo:

open_directory ($ ruta);
while ($ file = get_directory_content) {
if (empty (get_file_extension ($ file))) {
copy_the_file ($ archivo, $ destino);
}
}
close_directory;

Ariane
fuente
Desafortunadamente, tenemos archivos sin extensiones. Desde .placeholders para repositorios de código, hasta algunos archivos de datos específicos.
Torre
Oh. Bien. Tal vez hay una cosa if (es una carpeta), entonces. Pero uhm Lo de xcopy arriba parece que es lo correcto para ti entonces. A menos que no lo sea, en cuyo caso puede ejecutar un script para 1. copiar todas las carpetas y 2. vaciar todas las carpetas. O algo. Pero esto es ... largo. xD
Ariane
0

Use PowerShell para hacer eso usando. Haga una copia de la carpeta y luego Remove-Item -Path "C:\test\*.*" -recurse

usuario1586957
fuente
-1

Por lo que sé, hay software de terceros que puede proporcionar esta funcionalidad si desea hacerlo con el símbolo del sistema, entonces el comando copiar está disponible. escriba help copy en cmd que proporciona detalles sobre cómo copiar archivos a través de cmd.
después de copiar ir a la carpeta a través de cmd y ejecutar el comando

del *. *
que elimina archivos porque las carpetas no tienen. personaje

vishal
fuente
3
Borra archivos bien, pero ¿quién dice que los nombres de carpeta no pueden contener un punto / punto también?
Karan