Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de
Autor
|
Tema: [BATCH](SOLUCIONADO)Disminuir nombres repetidos a 1 solo (Leído 2,458 veces)
|
Francisasdasd
Desconectado
Mensajes: 175
Whit The Monsters In My Head :S
|
Estimados, buenas  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 : 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  !
|
|
|
|
« Última modificación: 26 Marzo 2011, 19:24 por Francisko.ASDF »
|
En línea
|
 .
|
|
|
pitoloko
Desconectado
Mensajes: 2.500
|
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 for /f %%a in ('type archivo.txt') do ( set Nombre=%%a echo %%a | find /C "3M CHILE S.A." call:duplicado :duplicado If %errorlevel% equ 0 ( goto:eof ) ELSE ( echo %%a >> archivo.txt 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 por pitoloko »
|
En línea
|
pa que
|
|
|
Francisasdasd
Desconectado
Mensajes: 175
Whit The Monsters In My Head :S
|
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
|
 .
|
|
|
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
 
Desconectado
Mensajes: 2.968
/^$/
|
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:\>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:\>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:\> @echo off setlocal for /f "tokens=*" %%s in ('type "file.txt"') do ( set "record=%%s" call :output ) endlocal goto :EOF :output if not defined prev_rec goto:write if "%record%" EQU "%prev_rec%" goto:EOF :write @echo %record% >> final.txt set "prev_rec=%record%"
|
|
|
|
|
En línea
|
|
|
|
Francisasdasd
Desconectado
Mensajes: 175
Whit The Monsters In My Head :S
|
Leo *O*!!, muchas gracias funciona a la perfección !!!!!! Muchas gracias de verdad !!!  !
|
|
|
|
|
En línea
|
 .
|
|
|
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
 
Desconectado
Mensajes: 2.968
/^$/
|
De nada.
|
|
|
|
|
En línea
|
|
|
|
al3xand3r-
Desconectado
Mensajes: 3
|
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
|
|
|
|
|
|
al3xand3r-
Desconectado
Mensajes: 3
|
Me podria ilustrar como quedaria el codigo si no fuera mucha la molestia....
|
|
|
|
|
En línea
|
|
|
|
|
|
al3xand3r-
Desconectado
Mensajes: 3
|
hola Francisasdasd, lo que necesito es que solo me quede un archivo sin los datos duplicados el codigo que me colocaste me borra todo y me deja el dato que esta duplicado en el txt. gracias 
|
|
|
|
|
En línea
|
|
|
|
pitoloko
Desconectado
Mensajes: 2.500
|
@echo off setlocal enabledelayedexpansion for /f "tokens=*" %%_ in ('type "file.txt"') do ( set "record=%%_" call :output ) DeL /f /q file.txt REn final.txt file.txt exit :output if not defined prev_rec goto:write if "%record%" EQU "%prev_rec%" goto:EOF :write echo !record! >> final.txt set "prev_rec=%record%" goto:eof Pruebalo, creo que no funciona correctamente :/ saludos
|
|
|
|
« Última modificación: 30 Junio 2011, 00:56 por pitoloko »
|
En línea
|
pa que
|
|
|
Francisasdasd
Desconectado
Mensajes: 175
Whit The Monsters In My Head :S
|
Esta bien como lo modifico pitoloko, yo lo modifique pero no me di cuenta que esa funcion no tiene EOF (?) y tomaba toda la instruccion incluyendo el del y el ren xD.
|
|
|
|
|
En línea
|
 .
|
|
|
Turrete
Desconectado
Mensajes: 1
|
Yo se que es un tema viejo, pero queria dar las gracias a Leo Gutiérrez por el script, hace dos semanas que busco algo asi para parsear un log.
Muchas gracias !!
|
|
|
|
|
En línea
|
|
|
|
|
|