Saltar al contenido

¿Cómo diferencio dos archivos de texto en Windows Powershell?

Posteriormente a investigar con expertos en este tema, programadores de varias áreas y profesores hemos dado con la solución a la cuestión y la plasmamos en este post.

Solución:

Solución 1:

Lo descubrí yo mismo. Debido a que Powershell funciona con objetos .net en lugar de texto, debe usar get-content para exponer el contenido de los archivos de texto. Entonces, para realizar lo que estaba tratando de hacer en la pregunta, use:

compare-object (get-content one.txt) (get-content two.txt)

Solución 2:

Una forma más sencilla de hacerlo es escribir:

diff (cat file1) (cat file2)

Solución 3:

O podrías usar el DOS fc comando así (Esto muestra la salida de ambos archivos, por lo que tendrá que buscar las diferencias):

fc.exe filea.txt fileb.txt > diff.txt

fc es un alias para el cmdlet Format-Custom, así que asegúrese de ingresar el comando como fc.exe. Tenga en cuenta que muchas utilidades de DOS no manejan la codificación UTF-8.

También puede generar un proceso CMD y ejecutar fc dentro de ella.

start cmd "/c  ""fc filea.txt fileb.txt >diff.txt"""

Esto le indica a PowerShell que inicie un proceso con el programa ‘cmd’ utilizando los parámetros entre comillas. Entre comillas, está la opción cmd ‘/c’ para ejecutar el comando y terminar. El comando real para ejecutar cmd en el proceso es fc filea.txt fileb.txt redirigir la salida al archivo diff.txt.

Puedes usar el DOS fc.exe desde dentro de powershell.


Solución 4:

diff on *nix no es parte del shell, sino una aplicación separada.

¿Hay alguna razón por la que no pueda usar diff.exe en PowerShell?

Puede descargar una versión del paquete UnxUtils (http://unxutils.sourceforge.net/)


Solución 5:

compare-object (también conocido como diff alias) es patético si espera que se comporte como un unix diff. Probé la diferencia (archivo gc1) (archivo gc2), y si una línea es demasiado larga, no puedo ver la diferencia real y, lo que es más importante, no puedo decir en qué número de línea está la diferencia.

Cuando intento agregar -passthru, ahora puedo ver la diferencia, pero pierdo en qué archivo está la diferencia y todavía no obtengo un número de línea.

Mi consejo, no use powershell para encontrar diferencias en los archivos. Como señaló otra persona, fc funciona, y funciona un poco mejor que compare-object, y aún mejor es descargar y usar herramientas reales como el emulador de Unix que mencionó Mikeage.

Si aceptas, tienes la habilidad dejar un tutorial acerca de qué le añadirías a este post.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *