Robocopy no copia la carpeta raíz y su marca de tiempo: copia todos los subdirectorios y archivos (cuando se establecen las opciones apropiadas) y parece que no hay opción / argumento para decirle a Robocopy que desea la carpeta raíz en sí y su marca de tiempo o atributos para ser copiado literalmente también.
Entonces digamos que quiero, quiero copiar C: / Pinceles
Robocopy copiará todos sus subdirectorios y archivos en el destino, pero no la carpeta Brushes en sí, con todos los atributos asociados y la marca de tiempo.
¿Entiendes lo que te estoy preguntando? Esto es bastante básico y Robocopy parece carecer de una opción para ello. La gente ha planteado la pregunta antes en varios foros, pero en lo que a mí respecta, nadie ha respondido la pregunta.
rsync
, pero ¿qué pasa si no tiene una barra diagonal al final de su carpeta de destino? ¿Qué tal intentar modificar el script a nivel de línea de comandos en lugar de usar la GUI? Sé con certeza que la herramienta de línea de comandos hará lo que necesita.Respuestas:
Suelta una carpeta en
bat
o úsala en Enviar a . Creará una carpeta con el nombre y la marca de tiempo del directorio de origen y copiará todos los archivos.fuente
%~n1
?Estoy de acuerdo con el OP, no poder copiar la carpeta raíz es una gran deficiencia de robocopy. ¿Qué hay de hacer trampa y mover la carpeta de pinceles a una carpeta temporal, realizar la operación robocopy en la carpeta temporal y luego volver a moverla?
Algo como:
fuente
Intente
md D:\Backup\Brushes && robocopy C:\brushes D:\Backup\Brushes
desde la línea de comandos, sustituyendo las rutas correctas.fuente
Como no puedo ver ninguna solución buena y fácil en ninguna de las respuestas:
Si no hay una solución para robocopy, puede echar un vistazo a xxcopy (hay versiones gratuitas y comerciales).
Por supuesto, hay muchas otras alternativas a la robocopia, algunas se enumeran aquí .
Consulte también la Mejor utilidad de copia de archivos gratuita .
fuente
xxcopy
es una gran utilidad, pero la versión gratuita tiene un mensaje al que debe responder si utiliza cualquiera de una gran lista de modificadores de línea de comandos. Utilizandoxxcopy
desde una ventana de comandos, este mensaje adicional es irritante. Pero evita (complica) el uso dexxcopy
un archivo por lotes.La respuesta de user105198 es la mitad,
D:\Backup\Brushes && robocopy C:\brushes D:\Backup\Brushes
de hecho solo creará una nueva carpeta. Usted tendrá que anexar / MIR y / DCOPY: T a ellacombinado, significa: los atributos del directorio de origen y las marcas de tiempo se reflejarán en la carpeta creada.
entonces:
fuente
Creo que encontrará que Robocopy hace exactamente lo que quiere, siempre que le indique que copie las marcas de tiempo de la carpeta (/ DCOPY: T). De mis experimentos, he encontrado que el siguiente comportamiento (aparentemente indocumentado) es cierto para Robocopy:
Las propiedades especificadas pueden incluir (al menos) la información de seguridad (/ SEC) o las marcas de tiempo de la carpeta (/ DCOPY: T).
Por lo tanto, en el siguiente ejemplo, a la carpeta c: \ destination \ se le asignarán las mismas marcas de tiempo que a la carpeta c: \ source \.
Probé esto con las versiones de Robocopy incluidas con Windows 7, Windows 8 y el Kit de recursos de Windows 2003 (solo parámetro / SEC). Tenga en cuenta que solo las versiones más recientes de Robocopy (XP026 y superior) admiten el parámetro / DCOPY: T.
fuente
Si combina
/IF :: Include the following Files.
con/E :: copy subdirectories, including Empty ones.
usted obtiene (cerca de) el efecto deseado:fuente
Robocopy no está realmente diseñado para hacerlo fácilmente. Sin embargo, hay un camino.
La carpeta raíz contiene, digamos, 50 archivos y 40 carpetas. Solo desea la carpeta X (pero también desea que sea la marca de fecha y hora).
El / DCOPY: T le dice que mantenga las marcas de tiempo de la carpeta. / XF especifica qué archivos NO copiar, / XD especifica qué carpetas NO copiar. Simplemente no especifique la carpeta c: \ X.
El principal inconveniente de esto es investigar todas las carpetas y nombres de archivos en la raíz y llamarlos específicamente a todos aquí. Si está haciendo esto mucho en diferentes sistemas, se podría escribir un script.
Ejemplo de trabajo
robocopy c: \ testing c: \ abc / XF c: \ testing \ Testing.txt / XD "C: \ testing \ Nueva carpeta (2)" "C: \ testing \ Nueva carpeta (3)" / S / E / SEC / DCOPY: T
Ejemplo de trabajo de raíz
robocopy c: \ d: \ / XF c: \ Testing.txt / XD "C: \ Nueva carpeta (2)" "C: \ Nueva carpeta (3)" / S / E / SEC / DCOPY: T
Mi prueba funcionó, creo algunas carpetas y subcarpetas, c: \ testing era root en este caso, c: \ abc era root de otra unidad (obviamente no lo son realmente, pero para este propósito debería tener sentido). La carpeta que quería desde la raíz se llamaba "Nueva carpeta", como puede ver, no la especifiqué en / XD. Además, asegúrese de especificar c: \ o los nombres que use serán globales. En otras palabras, si no especifico c: \ testing desde el archivo Testing.txt, lo omitiría de TODAS las subcarpetas que se copian. El / SEC copiará todos los sellos de seguridad y hora del archivo.
fuente
En teoría, el uso
/DCOPY:T
debería resolver todos sus problemas.Pero, he visto que esto sucede, y no estoy seguro de llamarlo "error", sino más bien una consecuencia de la secuencia de operaciones (OK, error).
Este comando debería funcionar para copiar todos los archivos de
C:\Brushes
aD:\NEWBrushes
, y/DCOPY:T
debería hacer que las marcas de tiempo de la carpeta de origen se copien en la carpeta de destino:Lo que he visto (al menos en algunas versiones de Robocopy) es que el comando tiene éxito, pero la marca de tiempo de la
D:\NEWBrushes
carpeta está configurada en la fecha y hora actuales.Por lo tanto, parece que la
/DCOPY:T
función no funciona para la carpeta "base" (superior) que está copiando.Creo que está funcionando, pero que la marca de tiempo de la carpeta de destino está siendo "pisada" por operaciones que se encuentran más adelante en la secuencia de operaciones.
Lo que creo que está sucediendo para este comando:
es algo como esto:
D:\NEWBrushes
si aún no existeC:\Brushes
aD:\NEWBrushes
C:\Brushes
aD:\NEWBrushes
Parece que el Paso 3, la modificación del contenido de la carpeta
D:\NEWBrushes
haceD:\NEWBrushes
que cambie la marca de tiempo de .Para mí, la "solución" ha sido ejecutar el
robocopy
comando para copiar los archivos y carpetas, luego ejecutar el (mismo)robocopy
comando por segunda vez.Entonces, la primera vez que corres:
Todos los archivos y carpetas serán copiados. Luego ejecutándolo nuevamente:
La segunda vez que se
robocopy
ejecuta, noD:\NEWBrushes
se modificarán archivos ni carpetas , y la/DCOPY:T
opción le indicarárobocopy
que copie la marca de tiempo deC:\Brushes
aD:\NEWBrushes
(a menos que haya carpetas / archivosC:\Brushes
que hayan cambiado desde la primera ejecución derobocopy
).fuente
Estaba resolviendo las carpetas raíz en este momento para un script de copia de seguridad realmente rápido y fácil con robocopy, hay un ejemplo. Debería ayudar a cualquiera:
fuente