¿Existe una forma inmediata de comparar dos carpetas en Windows 7? La comparación debe mostrar las diferencias en términos de carpetas de subdirectorio y archivos de subdirectorio.
¿Existe una forma inmediata de comparar dos carpetas en Windows 7? La comparación debe mostrar las diferencias en términos de carpetas de subdirectorio y archivos de subdirectorio.
Respuestas:
No soy un PowerShell Pro, pero esto le daría qué archivos y carpetas existen en una carpeta pero no en la otra.
$test1 = get-childitem -path C:\Users\IrisDaniela\Documents\test1 -recurse
$test2 = get-childitem -path C:\Users\IrisDaniela\Documents\test2 -recurse
compare-object $test2 $test1 | Where {$_.SideIndicator -eq '=>'}
Esto da:
InputObject SideIndicator
----------- -------------
test1a =>
test.txt =>
Por supuesto, también puede omitir el filtrado y obtener:
$test1 = get-childitem -path C:\Users\IrisDaniela\Documents\test1 -recurse
$test2 = get-childitem -path C:\Users\IrisDaniela\Documents\test2 -recurse
compare-object $test2 $test1
InputObject SideIndicator
----------- -------------
test1a =>
test.txt =>
test2b <=
No sé si esto es lo que estás buscando, pero quizás te dé un buen comienzo :)

Para comparar el uso del contenido: compare-object (get-content a.text)(get-content b.txt) y así
Existe una buena herramienta de Unix llamada diff, que puede instalar desde cygwin.
Al ganar, hay una herramienta gui llamada beyondCompare.
Puede crear un archivo por lotes que cree dos archivos de texto temporales que contengan la estructura del directorio, luego compare esos archivos temporales con fc.
Algo como (y ajustar por preferencias):
dir %1 /s /b /a /ong > temp1.txt
dir %2 /s /b /a /ong > temp2.txt
fc temp1.txt temp2.txt
Los argumentos para el comando dir son: /s recurse en carpetas de niños /b no muestres detalles, podrías omitir esto tal vez /ong ordenar por nombre ascendente, directorios primero
Además, recuerda ajustar los posibles espacios en los argumentos.
EDITAR: como se indica en los comentarios, tendremos que eliminar el prefijo de directorio del archivo de texto de la lista de archivos. Esto se puede hacer con un archivo por lotes como:
@echo off
setlocal EnableDelayedExpansion
for /F "delims==" %%a in (%1) do @(
set CURR_LINE=%%a
@echo !CURR_LINE:~%2!
)
endlocal
Usado como unprefix text_file.txt prefix_length. Así por ejemplo unprefix temp1.txt 5 generará el contenido de temp1.txt sin los primeros 5 caracteres de cada línea.
dir /s /b siempre muestra la ruta absoluta, por lo que cada línea tendrá un prefijo de ruta diferente que causará fc para reportar cada linea Necesitará una herramienta para eliminar el prefijo de ruta antes de la comparación.
yo suelo FreeCommander (un clon de Norton Commander) para hacer esto. Proporciona la función "Sincronizar carpetas" que permite comparar dos carpetas y, opcionalmente, sincronizarlas. Las opciones de comparación incluyen "Por CRC", "Por fecha", "Por contenido", Subcarpetas y más. Es muy poderoso y me ha ayudado muchas veces a hacer perfectamente lo mismo que pediste.
En general, FreeCommander es una herramienta muy poderosa. La otra característica que uso a menudo es la búsqueda con archivos y carpetas.