comparison - portable - ¿Cuál es la mejor manera de comparar 2 árboles de carpetas en Windows?
winmerge (8)
¿Intentó: https://www.araxis.com/merge/index.en Permite visualizar cambios y combinar selectivamente diferencias específicas en archivos y carpetas.
Estoy moviendo un repositorio de sourcesafe a subversion y necesito asegurarme de que los puntos vitales sean iguales. ¿Es un comando / herramienta existente para Windows que me permite comparar dos árboles de carpetas que son iguales (tiene la misma estructura de carpetas y archivos del mismo contenido)? Lo ideal será algo así como línea de comandos:
some_cool_compare c:/current_vss c:/current_svn -exclude .svn;*.vspscc;*.scc
¿Existe alguna herramienta / comando o debo escribir un script propio?
Al igual que el OP, estaba buscando una herramienta de diferencias de carpetas de Windows, en particular una que pudiera manejar árboles muy grandes (cientos de Gigabytes de datos). Gracias a por el puntero a BeyondCompare , que encontré MUY rápido (aproximadamente 10-100 veces más rápido) que mi anterior windiff herramientas de la vieja escuela.
Por cierto, BeyondCompare tiene un modo de línea de comandos además de la GUI.
Como soy reacio a instalar nuevos programas en mi máquina, este script de PowerShell (de Hey, Scripting Guy! Blog ) me ayudó a resolver mi problema. Solo modifiqué el camino para adaptarme a mi caso:
$fso = Get-ChildItem -Recurse -path F:/songs
$fsoBU = Get-ChildItem -Recurse -path D:/songs
Compare-Object -ReferenceObject $fso -DifferenceObject $fsoBU
Puedes usar git para exactamente este propósito. Básicamente, usted crea un repositorio git en la carpeta A
(el repositorio está en A/.git
), luego copia A/.git
a B/.git
, luego cambia a la carpeta B
y compare simplemente ejecutando git diff. Y la funcionalidad .gitignore
se puede lograr con .gitignore
.
Entonces, siguiendo su ejemplo (pero usando bash shell en Linux):
# Create a Git repo in current_vss
pushd current_vss
printf ".svn/n*.vspscc/n*.scc" >> .gitignore
git init && git add . && git commit -m ''initial''
popd
# Copy the repo to current_svn and compare
cp -r current_vss/.git* current_svn/
pushd current_svn
git diff
También puede ejecutar tree > tree.txt
en ambas carpetas y luego modificar ambos archivos tree.txt con cualquier herramienta diff basada en archivos (git diff).
Más allá de comparar te permite hacer eso y mucho más.
Es una de esas herramientas con las que no puedo vivir.
Eche un vistazo here para obtener una referencia sobre las opciones de scripting
SyncToy es una aplicación gratuita de Microsoft con un modo "Vista previa" para comparar dos rutas. Por ejemplo:
A continuación, puede elegir uno de los tres modos ("Sincronizar", "Eco" y "Contribuir") para resolver las diferencias.
Por último, viene con SyncToyCmd
para crear y sincronizar pares de carpetas desde la CLI o una tarea programada.