Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: elecktra en 10 Febrero 2012, 04:08 am



Título: Se podra comprar archivo dos txt con Bat?
Publicado por: elecktra en 10 Febrero 2012, 04:08 am
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.


Título: Re: Se podra comprar archivo dos txt con Bat?
Publicado por: Eleкtro en 10 Febrero 2012, 11:29 am
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
  1. 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
  1. @Echo OFF
  2.  
  3. For /F "Tokens=*" %%@ In ('Type "Baja.txt"') Do (
  4. Find /I "%%@" "Contactos.txt" >Nul
  5. call :New_Text %%@
  6. )
  7. Rename "Baja.txt" "*.bak"
  8. Rename "Baja.txt.tmp" "*."
  9.  
  10. :New_Text
  11. If NOT %Errorlevel% EQU 0 (Echo %*>>Baja.txt.tmp)
  12. Goto :EOF


Este bat borra las coincidencias de "Contactos.txt"

Código
  1. @Echo OFF
  2.  
  3. For /F "Tokens=*" %%@ In ('Type "Contactos.txt"') Do (
  4. Find /I "%%@" "Baja.txt" >Nul
  5. call :New_Text %%@
  6. )
  7. Rename "Contactos.txt" "*.bak"
  8. Rename "Contactos.txt.tmp" "*."
  9.  
  10. :New_Text
  11. If NOT %Errorlevel% EQU 0 (Echo %*>>Contactos.txt.tmp)
  12. Goto :EOF


Título: Re: Se podra comprar archivo dos txt con Bat?
Publicado por: elecktra en 11 Febrero 2012, 02:44 am
Estimado, muchas gracias, sabes que he probado
Código:
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.


Título: Re: Se podra comprar archivo dos txt con Bat?
Publicado por: Eleкtro en 11 Febrero 2012, 08:49 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.

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!


Título: Re: Se podra comprar archivo dos txt con Bat? (Solucionado)
Publicado por: elecktra en 11 Febrero 2012, 22:59 pm
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.