
Tengo una unidad flash USB donde tengo una carpeta llamada X que siempre tiene que ser como la carpeta Y en mi computadora portátil y viceversa, dependiendo de las últimas acciones. Por ejemplo, si elimino algo en la carpeta Y, también debe eliminarse en la carpeta X (tan pronto como se conecta la unidad flash) y viceversa. Si agrego una carpeta o un archivo en X, también debe agregarse en Y, tan pronto como se conecta la unidad flash.
Ahora hice un breve script por lotes usando robocopy:
@echo off
robocopy "D:\AC ActiveZone Mobile" "C:\AC ActiveZone" /MIR
PAUSE
La carpeta ActiveZone Mobile es nuestra carpeta X y ActiveZone es nuestra carpeta Y. El problema ahora es que esto no parece ser una sincronización bidireccional. Voy a demostrar que:
1.) Ambas carpetas, sus subcarpetas y archivos son identificados 2.) Creó un nuevo archivo T1 en la carpeta X 3.) Creó un nuevo archivo T2 en la carpeta Y 4.) Ejecutó el script
Resultado: en lugar de tener T1 y T2 en las carpetas X e Y, ahora solo tengo T1 en las carpetas X e Y.
Además, (después de la primera prueba anterior) si elimino T1 en la carpeta Y y ejecuto el script, todo lo que obtengo es un nuevo T1 en la carpeta Y. Pero la acción de eliminación de T1 en Y no es más antigua sino más nueva que la creación de T1 en X. Quiero que T1 también se elimine en X en lugar de copiar T1 de X a Y.
¿Cómo hacer esto con un script por lotes?
Respuesta1
Eh, fácil. Simplemente ejecútelo de dos maneras, excluyendo archivos más antiguos:
@ECHO OFF
ECHO Two way mirror between %1 and %2, continue?
PAUSE
robocopy %2 %1 /E /DST /FFT /XO /XJ
robocopy %1 %2 /E /DST /FFT /XO /XJ
Esto debería conservar la copia más reciente si el archivo existe en ambas ubicaciones. Utilizo /DST y /FFT porque las diferencias de marca de tiempo NTFS/FAT32 a menudo causan comparaciones falsas e inválidas. También excluyo personalmente Thumbs.db, desktop.ini, etc.
Si desea eliminar archivos que no existen, debe decidir cuál es la ubicación "principal", colóquela en la segunda línea y cambie /E a /MIR. Creo que su idea de saber si un archivo fue eliminado de uno u otro en lugar de que uno simplemente no tenga un archivo que el otro tiene es imposible sin algún tipo de seguimiento que va más allá de lo que puede hacer robocopy.