tengo un directorio que contiene los archivos y una serie de niveles de subdirectorios:¿Cómo puedo mover los contenidos de un árbol de directorios a otro?
C:\Source
me gustaría mover el contenido de C: \ Source en:
C:\Destination
Requisitos:
- Todos los archivos y todos los subdirectorios dentro de C: \ SourceData se debe mover
- que va a correr el comando en un archivo por lotes
- no puedo usar Powershell o otros lenguajes de script
Intento 0
XCOPY /E "C:\Source" "C:\Destination"
Esto funciona perfectamente, pero copia en lugar de movimientos. No puedo copiar y luego eliminar la fuente porque estoy moviendo un gran conjunto de archivos y no hay suficiente espacio en el disco para tener dos copias a la vez.
Intento 1
MOVE "C:\Source" "C:\Destination"
Esto mueve todo el directorio C: \ Fuente en C: \ destino por lo que terminan con:
C:\Destination\Source
Intento 2
Con un poco de ayuda de this question and accepted answer Se me ocurrió:
for /r "C:\Source" %%x in (*) do move "%%x" "C:\Destination"
Esto mueve los archivos dentro de C: \ Source pero no en los subdirectorios o sus contenidos. Tenga en cuenta que utilicé %% x en lugar de% x como lo estoy usando en un archivo por lotes.
Usar FOR parece prometedor pero no estoy seguro de haber usado la sintaxis correcta? ¿Me he perdido algo?
Intento 3
Como se sugiere por Nick D, he intentado cambiar el nombre de:
Cambiar nombre "C: \ Source" Destino
Para el escenario de ejemplo que dio esto funciona bien. Por desgracia mi verdadero destino directorio está en un nivel diferente a la Fuente directorio y esto no parece ser apoyado:
C:\>REN /?
Renames a file or files.
RENAME [drive:][path]filename1 filename2.
REN [drive:][path]filename1 filename2.
Note that you cannot specify a new drive or path for your destination file.
consigo "La sintaxis del comando es incorrecta."Errores si intenta especificar una ruta de destino más compleja, por ejemplo:
RENAME "C:\Source" "C:\MyOtherDirectory\Destination"
RENAME "C:\Source" "MyOtherDirectory\Destination"
Mientras MOVE moverá la "fuente" * a * "destino" si "destino" ya existe, moverá "origen" * a * "destino" si no existe. –
Si RENAME funcionó como lo deseaba, entonces podría haberse movido a la carpeta correcta con un nombre temporal, y luego renombrado :) – eglasius