elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [BATCH](SOLUCIONADO)Disminuir nombres repetidos a 1 solo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [BATCH](SOLUCIONADO)Disminuir nombres repetidos a 1 solo  (Leído 11,586 veces)
FranciskoAsdf

Desconectado Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
[BATCH](SOLUCIONADO)Disminuir nombres repetidos a 1 solo
« en: 26 Marzo 2011, 13:40 pm »

Estimados, buenas :D xD

Espero me puedan ayudar con esto, es super simple (la pregunta xD) pero no se me ocurre como hacerlo.

Lo que pasa es que tengo un Script que me muestra los proveedores a los que tengo que hacerles pedido segun el dia que le consulte, el problema es que me genera algo como lo siguiente :

Código:
Des_Proveedor 
3M CHILE S.A.
3M CHILE S.A.
ABASTECEDORA DEL COMERCIO LTDA.
ABASTECEDORA DEL COMERCIO LTDA.
ABASTECEDORA DEL COMERCIO LTDA.
ABASTECEDORA DEL COMERCIO LTDA.
ABASTECEDORA DEL COMERCIO LTDA.
ABASTECEDORA DEL COMERCIO LTDA.
ABASTECEDORA DEL COMERCIO LTDA.
ABU GOSCH ZONA FRANCA
ABU GOSCH ZONA FRANCA
ABU GOSCH ZONA FRANCA
ABU GOSCH ZONA FRANCA
ABU GOSCH ZONA FRANCA
ABU GOSCH ZONA FRANCA
ABU GOSCH ZONA FRANCA
ABU GOSCH ZONA FRANCA
ABU GOSCH ZONA FRANCA
ADELCO CHILLAN
ADELCO CHILLAN
ADELCO CHILLAN
ADELCO CHILLAN
ADELCO CHILLAN
AGROCOMERCIAL CODIGUA LTDA.
AGROCOMERCIAL CODIGUA LTDA.
AGROSUPER COMERCIALIZ.DE ALIMENTOS
AGROSUPER COMERCIALIZ.DE ALIMENTOS
AGROSUPER COMERCIALIZ.DE ALIMENTOS
AGROSUPER COMERCIALIZ.DE ALIMENTOS
AGROSUPER COMERCIALIZ.DE ALIMENTOS
AGROSUPER COMERCIALIZ.DE ALIMENTOS
AGROSUPER COMERCIALIZ.DE ALIMENTOS
AGROSUPER COMERCIALIZ.DE ALIMENTOS
AGROSUPER COMERCIALIZ.DE ALIMENTOS
AGROSUPER COMERCIALIZ.DE ALIMENTOS
AGROSUPER COMERCIALIZ.DE ALIMENTOS
AGROSUPER COMERCIALIZ.DE ALIMENTOS
AGROSUPER COMERCIALIZ.DE ALIMENTOS

Obviamente no voy a colocar los mas de 2000 registros que contiene el .txt xD

Bueno al grano, quisiera saber como puedo hacer para procesar el archivo y que reduzca a 1 sola vez el nombre del proveedor xD? se entiende?. O sea que en vez que AGROSUPER salga 50 veces, salga una vez.

Necesito que sea una sola vez por proveedor porque quiero mostrar por pantalla los proveedores por dia, pero seria un poco engorroso mostrarlos todos xD.

El objetivo del script es ayudarme a ordenar las compras. Lo haria en una planilla Excel, pero me mata otros datos que necesito vizualizar.

Sin otro particular y esperando me puedan ayudar. Me despido. Saludos ;D!


« Última modificación: 26 Marzo 2011, 19:24 pm por Francisko.ASDF » En línea

Asdf debería ser algún tipo de función.
SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: [BATCH]Disminuir nombres repetidos a 1 solo
« Respuesta #1 en: 26 Marzo 2011, 14:13 pm »

Esta bien, no copies las 2.000 lineas, pero porfavor pon el codigo o la parte que nos interesa para poder ayudarte, sino, no se como... pero lo que se me ocurre a simple vista y sin ver el codigo, es que pases los parametos a | Find para borrar nombres duplicados (Con un if)

saludosss

Código
  1. for /f %%a in ('type archivo.txt') do (
  2.  
  3. set Nombre=%%a
  4. echo %%a | find /C "3M CHILE S.A."
  5. call:duplicado
  6.  
  7. :duplicado
  8. If %errorlevel% equ 0 (
  9. goto:eof
  10. ) ELSE (
  11. echo %%a >> archivo.txt
  12. goto:eof)

esa es mas o meons mi idea, aunque tiene fallos, no hace lo que pides asi que no lo pruebes, ya he dicho que es una idea para perfeccionar, hace falta una variable que no cambie con el primer nombre de proveedor, y luego una segunda que vaya probando los otros nombres en mi idea, como no puedo ver el código no voy a seguir haciendo ese codigo, es una idea xD.

Saludos



« Última modificación: 26 Marzo 2011, 14:20 pm por pitoloko » En línea

No he vuelto, solo estoy de paso.
FranciskoAsdf

Desconectado Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
Re: [BATCH]Disminuir nombres repetidos a 1 solo
« Respuesta #2 en: 26 Marzo 2011, 14:40 pm »

No sé que codigo quieres ver xD, proque no tienen relacion con lo que quiero hacer, los que tengo me van limpiando el archivo segun mi consulta hasta que queda asi, solo me falta eliminar los duplicados, se me ocurre que con un FOR (seria los mas rapido supongo), pero como FOR definitivamente no es algo que maneje, no se me ocurre que colocarle xDD

Pero gracias por el intento, voy a ver si es que lo puedo modificar xD


Saludos.

En línea

Asdf debería ser algún tipo de función.
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [BATCH]Disminuir nombres repetidos a 1 solo
« Respuesta #3 en: 26 Marzo 2011, 17:58 pm »

Mira, el siguiente script funciona, aclaro que yo no lo hice, lo tenía guardado de hace mucho, no sé de quien sea, así que aclaro, no es mío. Lo adapté y funciona.

Código:
C:\>type file.txt
Des_Proveedor
3M CHILE S.A.
3M CHILE S.A.
ABASTECEDORA DEL COMERCIO LTDA.
ABASTECEDORA DEL COMERCIO LTDA.
ABASTECEDORA DEL COMERCIO LTDA.
ABASTECEDORA DEL COMERCIO LTDA.
ABASTECEDORA DEL COMERCIO LTDA.
ABASTECEDORA DEL COMERCIO LTDA.
ABASTECEDORA DEL COMERCIO LTDA.
ABU GOSCH ZONA FRANCA
ABU GOSCH ZONA FRANCA
ABU GOSCH ZONA FRANCA
ABU GOSCH ZONA FRANCA
ABU GOSCH ZONA FRANCA
ABU GOSCH ZONA FRANCA
ABU GOSCH ZONA FRANCA
ABU GOSCH ZONA FRANCA
ABU GOSCH ZONA FRANCA
ADELCO CHILLAN
ADELCO CHILLAN
ADELCO CHILLAN
ADELCO CHILLAN
ADELCO CHILLAN
AGROCOMERCIAL CODIGUA LTDA.
AGROCOMERCIAL CODIGUA LTDA.
AGROSUPER COMERCIALIZ.DE ALIMENTOS
AGROSUPER COMERCIALIZ.DE ALIMENTOS
AGROSUPER COMERCIALIZ.DE ALIMENTOS
AGROSUPER COMERCIALIZ.DE ALIMENTOS
AGROSUPER COMERCIALIZ.DE ALIMENTOS
AGROSUPER COMERCIALIZ.DE ALIMENTOS
AGROSUPER COMERCIALIZ.DE ALIMENTOS
AGROSUPER COMERCIALIZ.DE ALIMENTOS
AGROSUPER COMERCIALIZ.DE ALIMENTOS
AGROSUPER COMERCIALIZ.DE ALIMENTOS
AGROSUPER COMERCIALIZ.DE ALIMENTOS
AGROSUPER COMERCIALIZ.DE ALIMENTOS
AGROSUPER COMERCIALIZ.DE ALIMENTOS
C:\>


Código:
C:\>code

C:\>type final.txt
Des_Proveedor
3M CHILE S.A.
ABASTECEDORA DEL COMERCIO LTDA.
ABU GOSCH ZONA FRANCA
ADELCO CHILLAN
AGROCOMERCIAL CODIGUA LTDA.
AGROSUPER COMERCIALIZ.DE ALIMENTOS

C:\>

Código
  1. @echo off
  2. for /f "tokens=*" %%s in ('type "file.txt"') do (
  3. set "record=%%s"
  4. call :output
  5. )
  6. goto :EOF
  7.  
  8. :output
  9. if not defined prev_rec goto:write
  10. if "%record%" EQU "%prev_rec%" goto:EOF
  11.  
  12. :write
  13. @echo %record% >> final.txt
  14. set "prev_rec=%record%"
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
FranciskoAsdf

Desconectado Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
Re: [BATCH]Disminuir nombres repetidos a 1 solo
« Respuesta #4 en: 26 Marzo 2011, 19:22 pm »

Leo *O*!!, muchas gracias funciona a la perfección !!!!!!

Muchas gracias de verdad !!!

:D!
En línea

Asdf debería ser algún tipo de función.
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [BATCH](SOLUCIONADO)Disminuir nombres repetidos a 1 solo
« Respuesta #5 en: 26 Marzo 2011, 20:49 pm »

De nada.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
al3xand3r-

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: [BATCH](SOLUCIONADO)Disminuir nombres repetidos a 1 solo
« Respuesta #6 en: 24 Junio 2011, 15:48 pm »

hola.....
un favor grande!!! el codigo de leo funciona muy bien, pero como hago para que no me genere un nuevo archivo con los duplicados sino que los borre del archivo que esta buscando.

espero me entiendan..
En línea

SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: [BATCH](SOLUCIONADO)Disminuir nombres repetidos a 1 solo
« Respuesta #7 en: 24 Junio 2011, 15:58 pm »

hola.....
como hago para que no me genere un nuevo archivo con los duplicados sino que los borre del archivo que esta buscando.

Puedes usar SED, FART, o GREP.

http://foro.elhacker.net/scripting/batch_packs_de_aplicaciones_varias_commandlineinterface_actualizado_05mayo-t322976.0.html
En línea

No he vuelto, solo estoy de paso.
al3xand3r-

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: [BATCH](SOLUCIONADO)Disminuir nombres repetidos a 1 solo
« Respuesta #8 en: 24 Junio 2011, 19:11 pm »

Me podria ilustrar como quedaria el codigo si no fuera mucha la molestia....
En línea

FranciskoAsdf

Desconectado Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
Re: [BATCH](SOLUCIONADO)Disminuir nombres repetidos a 1 solo
« Respuesta #9 en: 25 Junio 2011, 00:01 am »

Código
  1. @echo off
  2. for /f "tokens=*" %%s in ('type "file.txt"') do (
  3. set "record=%%s"
  4. call :output
  5. )
  6. goto :EOF
  7.  
  8. :output
  9. if not defined prev_rec goto:write
  10. if "%record%" EQU "%prev_rec%" goto:EOF
  11.  
  12. :write
  13. @echo %record% >> final.txt
  14. set "prev_rec=%record%"
  15.  
  16. DeL /f /q file.txt
  17. REn final.txt file.txt

ASi quedaria :)
En línea

Asdf debería ser algún tipo de función.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines