Tengo una lista de ubicaciones de carpetas desde las que me gustaría copiar todos los archivos contenidos en esas ubicaciones. La lista de ubicaciones de carpetas se almacena en una línea separada dentro de un archivo de texto (.txt). Todos los archivos deben copiarse en la misma ubicación.
¿Cómo puedo completar este ejercicio usando esta lista de carpetas en combinación con una función de copia en el símbolo del sistema?
Respuesta1
Considerando un archivo con contenido similar que contiene una lista de directorios como:
c:
c:\users
c:\anyotherfolder
xcopy
dentro de un for
bucle hará el trabajo :)
for /f %a in (list.txt) do xcopy /e %a\* c:\destination_folder\
(copiando todo el árbol de directorios (debido a /e
))
Debe agregar un extra %
al nombre de la variable si desea conservarla y ejecutarla en un .bat
archivo separado.
Respuesta2
Tomé el código de Elvins y lo desarrollé ligeramente para resolver el problema de la inclusión de espacios en las rutas y nombres de las carpetas.
El comando For Do ahora usa un archivo CSV para obtener las rutas de las carpetas, entonces era necesario incluir la "delims=,"
opción dentro del comando For.
for /f "delims=," %a in (D:\Batch_Files\Test_Bench\Folders_List.csv) do copy "%a\*" D:\Batch_Files\Test_Bench\Paste_All_The_Files_Here
Los registros delimitados por comas permitieron For /f
acceder a las ubicaciones que contienen espacios, pero solo si el token %a\*
está envuelto en " ".