¿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.
@strangewalker puedes azotar a uno? ¿O sabe dónde están disponibles para ser utilizados por todos? También deberías convertir esto en una respuesta. Esto ayuda y voy a votar.
happybuddha
Respuestas:
13
No soy un PowerShell Pro, pero esto le daría qué archivos y carpetas existen en una carpeta pero no en la otra.
Gracias por su respuesta. ¿Hay algo OOTB disponible en Windows 7? No puedo instalar nada en esta computadora en la que estoy trabajando.
happybuddha
1
Las herramientas de Cygwin también se pueden ejecutar sin instalación, aunque necesita un poco de trabajo. Si tienes suerte, también existe la misma situación con beyondcompare. La solución más sencilla es instalar esto en casa y copiar sus carpetas en un pendrive. Asegúrate de no hacer nada contra la regulación de la red local, no podría dormir bien si perdías tu trabajo debido a mis consejos :)
peterh
1
@happybuddha Descargue un archivo diferente, como WinDiff, WinMerge o similar. Cópielo en un recurso compartido disponible para esta máquina a través de la red. Ejecutarlo desde allí. \\ myserver \ myshare \ windiff.exe localfolder1 localfolder2
Mark Allen
Aquí hay otro voto para más allá de comparar.
Daniel R Hicks
1
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.
Adrian Pronk
ah sí, tienes toda la razón.
frozenkoi
1
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.
Respuestas:
No soy un PowerShell Pro, pero esto le daría qué archivos y carpetas existen en una carpeta pero no en la otra.
Esto da:
Por supuesto, también puede omitir el filtrado y obtener:
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ífuente
Existe una buena herramienta de Unix llamada diff, que puede instalar desde cygwin.
Al ganar, hay una herramienta gui llamada beyondCompare.
fuente
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):
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 primeroAdemá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:
Usado como
unprefix text_file.txt prefix_length
. Así por ejemplounprefix temp1.txt 5
generará el contenido de temp1.txt sin los primeros 5 caracteres de cada línea.fuente
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.
fuente