Se podra comprar archivo dos txt con Bat?

Iniciado por elecktra, 10 Febrero 2012, 04:08 AM

0 Miembros y 1 Visitante están viendo este tema.

elecktra

Estimados, espero me puedan ayudar.

Ando necesitando comprar dos archivos de texto, son archivos simple con direcciones de mail (1 por renglon), un archivo se llama baja.txt y otro contactos.txt

La idea es poder leer los mail que se encuentran en baja.txt y si esos mail estan en contactos.txt eliminarlos?

Sera posible esto? Yo entiendo algo de batach, pero no se como hacer.

En caso de que se pueda ya sea en bacth o cualquier lenguaje, me ayudarian?

Gracias.

Eleкtro

#1
Hola Elektra

Supongo que la lista "baja.txt" es así:

usuario1@dominio.com
usuario2@dominio.es
usuario3@dominio.cz

Etc...
Y la lista "contactos.txt" tiene el mismo formato.

Aunque no me ha quedado claro de donde se tienen que borrar los duplicados.

No necesitas hacer esto en ningún lenguaje!

Puedes usar utilidades de terceros como SED, FART, UNIQ, o FC, entre otros.

FC es una utilidad legítima de Windows así que no te la tienes que descargar:
Código (DOS) [Seleccionar]
FC "Baja.txt" "Contactos" > Diferencias.txt
Creará un archivo de texto "Diferencias.txt" y al final de ese texto salen las linas NO duplicadas, el resto de arriba lo borras manualmente y ya.


De todas formas te hago unos codes:

Este bat borra las coincidencias de "baja.txt"

Código (DOS) [Seleccionar]
@Echo OFF

For /F "Tokens=*" %%@ In ('Type "Baja.txt"') Do (
Find /I "%%@" "Contactos.txt" >Nul
call :New_Text %%@
)
Rename "Baja.txt" "*.bak"
Rename "Baja.txt.tmp" "*."
Exit

:New_Text
If NOT %Errorlevel% EQU 0 (Echo %*>>Baja.txt.tmp)
Goto :EOF



Este bat borra las coincidencias de "Contactos.txt"

Código (DOS) [Seleccionar]
@Echo OFF

For /F "Tokens=*" %%@ In ('Type "Contactos.txt"') Do (
Find /I "%%@" "Baja.txt" >Nul
call :New_Text %%@
)
Rename "Contactos.txt" "*.bak"
Rename "Contactos.txt.tmp" "*."
Exit

:New_Text
If NOT %Errorlevel% EQU 0 (Echo %*>>Contactos.txt.tmp)
Goto :EOF








elecktra

Estimado, muchas gracias, sabes que he probado
FC "Baja.txt" "Contactos" > Diferencias.txt

Pero me arroja el error:

Comparando archivos baja.txt y CONTACTOS.TXT
Error al volver a sincronizar. Los archivos son demasiado diferentes
***** baja.txt


Por otra parte, la sentencia que armaste en batch, lo que hace es borrar las coincidencias en el mismo archivo o comparandolo con el otro?

Gracias.

Eleкtro

Cita de: elecktra en 11 Febrero 2012, 02:44 AM
Comparando archivos baja.txt y CONTACTOS.TXT
Error al volver a sincronizar. Los archivos son demasiado diferentes
***** baja.txt


XD vaya, pues en eso no puedo ayudar.

Cita de: elecktra en 11 Febrero 2012, 02:44 AM
Por otra parte, la sentencia que armaste en batch, lo que hace es borrar las coincidencias en el mismo archivo o comparandolo con el otro?

Hacen lo que pediste, El primer bat compara los emails de baja.txt con los de contactos.txt, y borra los repetidos en baja.txt

El otro compara los emails de contactos.txt con baja.txt y borra los repetidos de contactos.txt

De todas formas crean un archivo baja.txt.bak o contactos.txt.bak como medida precautiva xD

Saludos!








elecktra

Ahora comprendi, porque estaba un poco confuncido, probe y luego de analizar el archivo hace el proceso que encesito, Muchas gracias...

Doy el tema por cerrado.