Autor
|
Tema: [AYUDA]Con Modificacion de Archivo de Texto (Leído 5,629 veces)
|
FranciskoAsdf
Desconectado
Mensajes: 231
Ni bueno, ni malo. Solo nada.
|
Hola Saludos a todos! : Que fome estar molestando de nuevo, pero es que no me resulta un código y no sé porque :S, les voy a explicar un poco para ver si alguien me puede ayudar T_T: A ver tengo un archivo llamado plu.txt que contiene datos como los siguientes : 000145, 000145, 0, 2499, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN MANZANA FAMILIAR,SUPER TOTTAL 000146, 000146, 0, 0, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN MIGA (STROISSER),SUPER TOTTAL 000147, 000147, 0, 2990, 0,000000,0, 5, 0, 0,1,0,0,PIE DE LIMON FAMILIAR,SUPER TOTTAL 000148, 000148, 0, 2499, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN DURAZNO SUPER TOT,SUPER TOTTAL 000149, 000149, 0, 1299, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN ALEMAN,SUPER TOTTAL 000150, 000150, 0, 0, 0,000000,0, 5, 0, 0,1,0,0,QUEQUE INGLES MEDIANO,SUPER TOTTAL
(solo pegué unos pocos ya que son cientos de lineas :S) Cada linea del archivo de "identifica" por el código PLU que está antes de la primera "coma" (,). Lo que yo necesito es modificar el valor "5" que está antes de la octava coma de un PLU (codigo) especifico. Por ejemplo debo modificar el valor 5 del codigo 000148: Tengo el txt así: 000145, 000145, 0, 2499, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN MANZANA FAMILIAR,SUPER TOTTAL 000146, 000146, 0, 0, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN MIGA (STROISSER),SUPER TOTTAL 000147, 000147, 0, 2990, 0,000000,0, 5, 0, 0,1,0,0,PIE DE LIMON FAMILIAR,SUPER TOTTAL 000148, 000148, 0, 2499, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN DURAZNO SUPER TOT,SUPER TOTTAL 000149, 000149, 0, 1299, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN ALEMAN,SUPER TOTTAL 000150, 000150, 0, 0, 0,000000,0, 5, 0, 0,1,0,0,QUEQUE INGLES MEDIANO,SUPER TOTTAL
Y me tiene que quedar así 000145, 000145, 0, 2499, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN MANZANA FAMILIAR,SUPER TOTTAL 000146, 000146, 0, 0, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN MIGA (STROISSER),SUPER TOTTAL 000147, 000147, 0, 2990, 0,000000,0, 5, 0, 0,1,0,0,PIE DE LIMON FAMILIAR,SUPER TOTTAL 000148, 000148, 0, 2499, 0,000000,0, 25, 0, 0,1,0,0,KUCHEN DURAZNO SUPER TOT,SUPER TOTTAL 000149, 000149, 0, 1299, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN ALEMAN,SUPER TOTTAL 000150, 000150, 0, 0, 0,000000,0, 5, 0, 0,1,0,0,QUEQUE INGLES MEDIANO,SUPER TOTTAL
Después de intentar varias cosas he llegado hasta el siguiente código, pero no me funciona como yo quiero porque me modifica todas las lineas y yo solo necesito hacerlo en las que yo le diga al code :S, he aquí el código: Set /P "Plu=Ingrese Plu : " For /F "Tokens=1,9 Delims=,[] Skip=2" %%f In ('Find " %plu%" plu.txt /n' ) Do ( ) For /F "Tokens=* Delims=" %%x In ('Type plu.txt' ) Do ( Set Linea= !Linea:% style="color: #448888;">dato%= 25! ) :Show
Pero no sé porque no me funciona D: Espero que alguien me pueda ayudar, ya que son varias las lineas que debo modificar, y no siempre van a ser las mismas :S. De ante mano muchas gracias Se despide y saluda atte Francisco. PD: El formato del archivo siempre es el mismo, comas espacios y eso xD. PD2: Ya me leí el tema "acciones sobre archivos de texto" de leo, de hecho gracias a ese tema he conseguido mi code xD
|
|
« Última modificación: 28 Mayo 2010, 09:11 am por Panxin.boo »
|
En línea
|
Asdf debería ser algún tipo de función.
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
Lo que no especificaste es si el código 000148 se repite a lo largo del archivo, o si solo aparece una sola vez.
En fin, veré qué puedo hacer.
¿Para qué quieres hacer esto?
|
|
|
En línea
|
|
|
|
FranciskoAsdf
Desconectado
Mensajes: 231
Ni bueno, ni malo. Solo nada.
|
Hola Leo saludos Ninguno de los codigos se repiten en el archivo, son unicos. Y lo necesito para mi trabajo, ya que me lleva mas de media hora hacer este proceso , y el problema es que esto lo hago al salir de mi trabajo ( por una cuestion que no viene al caso) y asi me podria ahorrar varios minutos . PD: Son varios los codigos que debo cambiar, el que puse es solo un ejemplo . Espero me puedas ayudar ! Saludos
|
|
« Última modificación: 28 Mayo 2010, 23:53 pm por Panxin.boo »
|
En línea
|
Asdf debería ser algún tipo de función.
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
Bueno, hice esto: Teniendo el archivo con el siguiente contenido: C:\>type FILE.TXT 000145, 000145, 0, 2499, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN MANZANA FAMILIAR,SUPER TOTTAL 000146, 000146, 0, 0, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN MIGA (STROISSER),SUPER TOTTAL 000147, 000147, 0, 2990, 0,000000,0, 2, 0, 0,1,0,0,PIE DE LIMON FAMILIAR,SUPER TO TTAL 000148, 000148, 0, 2499, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN DURAZNO SUPER TOT,SUPER TOTTAL 000149, 000149, 0, 1299, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN ALEMAN,SUPER TOTTAL 000150, 000150, 0, 0, 0,000000,0, 5, 0, 0,1,0,0,QUEQUE INGLES MEDIANO,SUPER TO TTAL
C:\> El siguiente script modifica la linea con la ocurrencia indicada por la cadena indicada, modo de uso: code.bat código sustitución Ejemplos: C:\>type file.txt 000145, 000145, 0, 2499, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN MANZANA FAMILIAR,SUPER TOTTAL 000146, 000146, 0, 0, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN MIGA (STROISSER),SUPER TOTTAL 000147, 000147, 0, 2990, 0,000000,0, 5, 0, 0,1,0,0,PIE DE LIMON FAMILIAR,SUPER TO TTAL 000148, 000148, 0, 2499, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN DURAZNO SUPER TOT,SUPER TOTTAL 000149, 000149, 0, 1299, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN ALEMAN,SUPER TOTTAL 000150, 000150, 0, 0, 0,000000,0, 5, 0, 0,1,0,0,QUEQUE INGLES MEDIANO,SUPER TO TTAL
C:\>code 000148 34 000145, 000145, 0, 2499, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN MANZANA FAMILIAR,SUPER TOTTAL 000146, 000146, 0, 0, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN MIGA (STROISSER),SUPER TOTTAL 000147, 000147, 0, 2990, 0,000000,0, 5, 0, 0,1,0,0,PIE DE LIMON FAMILIAR,SUPER TO TTAL 000148, 000148, 0, 2499, 0,000000,0, 34, 0, 0,1,0,0,KUCHEN DURAZNO SUPER TOT,SUPE R TOTTAL 000149, 000149, 0, 1299, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN ALEMAN,SUPER TOTTAL 000150, 000150, 0, 0, 0,000000,0, 5, 0, 0,1,0,0,QUEQUE INGLES MEDIANO,SUPER TO TTAL
C:\>code 000145 -4 000145, 000145, 0, 2499, 0,000000,0, -4, 0, 0,1,0,0,KUCHEN MANZANA FAMILIAR,SUPER TOTTAL 000146, 000146, 0, 0, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN MIGA (STROISSER),SUPER TOTTAL 000147, 000147, 0, 2990, 0,000000,0, 5, 0, 0,1,0,0,PIE DE LIMON FAMILIAR,SUPER TO TTAL 000148, 000148, 0, 2499, 0,000000,0, 34, 0, 0,1,0,0,KUCHEN DURAZNO SUPER TOT,SUPE R TOTTAL 000149, 000149, 0, 1299, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN ALEMAN,SUPER TOTTAL 000150, 000150, 0, 0, 0,000000,0, 5, 0, 0,1,0,0,QUEQUE INGLES MEDIANO,SUPER TO TTAL
C:\>code 000147 345 000145, 000145, 0, 2499, 0,000000,0, -4, 0, 0,1,0,0,KUCHEN MANZANA FAMILIAR,SUPER TOTTAL 000146, 000146, 0, 0, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN MIGA (STROISSER),SUPER TOTTAL 000147, 000147, 0, 2990, 0,000000,0, 345, 0, 0,1,0,0,PIE DE LIMON FAMILIAR,SUPER TOTTAL 000148, 000148, 0, 2499, 0,000000,0, 34, 0, 0,1,0,0,KUCHEN DURAZNO SUPER TOT,SUPE R TOTTAL 000149, 000149, 0, 1299, 0,000000,0, 5, 0, 0,1,0,0,KUCHEN ALEMAN,SUPER TOTTAL 000150, 000150, 0, 0, 0,000000,0, 5, 0, 0,1,0,0,QUEQUE INGLES MEDIANO,SUPER TO TTAL
REM EL NÚMERO DE LÍNEA A MODIFICAR: FOR /F "TOKENS=1, 2 DELIMS=:" %%A IN ('TYPE "FILE.TXT" ^| FINDSTR /I /N /R " ^%1"' ) DO ( ) FOR /F "TOKENS=1-6*" %%A IN (" %CONTENIDO%" ) DO ( ( ECHO %%A %%B %%C %%D %%E %2, %%G ) | EDLIN /B FILE.TXT > NUL 2 >&1 ) TYPE "FILE.TXT" :ERROR
Saludos.
|
|
« Última modificación: 29 Mayo 2010, 00:25 am por Leo Gutiérrez. »
|
En línea
|
|
|
|
FranciskoAsdf
Desconectado
Mensajes: 231
Ni bueno, ni malo. Solo nada.
|
Hola Leo de nuevo T_T ( y muchas gracias por tu tiempo) : Al parecer hay algún problema con el peso del archivo, te preguntarás por que el peso, pues lo que pasa es que probando y probando, me he dado cuenta que hay un tope de lineas (o de peso de datos) que edlin puede leer, porque me he fijado hasta que código editaba la linea y he dividido el archivo original en dos partes. Por ejemplo con el archivo completo (sin dividir) solo edita hasta el código 051822 (que es la linea 388), y el no editaba el código que seguía el 051823, bueno pues seleccioné todo lo que seguía hasta el código 51823 (dejando este el principio del archivo, como primer código) y lo pegué en otro archivo, corrí el script sobre el archivo y funcionó, después que no editaba el código 051823 ahora si editaba el código 051823, aunque este código estaba al principio del nuevo archivo, seguí probando hasta que código editaba, y después de casi el mismo numero de lineas ya no editaba más, volví a dividir el archivo (ya vamos en 3 partes xD) y pasó lo mismo.- Me fijé en el peso de los archivos y es de 37kb y fracción.- Así pues es por eso que pienso que tiene que ver algo con eso del peso o con la cantidad de datos que puede manejar EDLIN.- Entonces estoy como PLOP!, no sé que se podrá hacer en estos casos :S. Muchos saludos y gracias de nuevo, pero es que no sé como lo puedo solucionar :S.- Saludos ! Te dejo el link con el archivo completo.- Link de txt El problema es que este archivo se genera diariamente, si no, seria super fácil modificarlo y cargar el mismo archivo siempre, pero no se puede ya que los valores van cambiando segun se necesite :/ Disculpa las molestias, espero me puedas segui ayudando
|
|
« Última modificación: 29 Mayo 2010, 18:26 pm por Panxin.boo »
|
En línea
|
Asdf debería ser algún tipo de función.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[AYUDA] Obtener la fecha de modificacion de un archivo
Programación C/C++
|
maxgeniusgm
|
1
|
7,119
|
31 Octubre 2012, 00:59 am
por BatchianoISpyxolo
|
|
|
Problema modificación archivo binario java
Programación General
|
solid120
|
0
|
3,568
|
3 Junio 2013, 11:28 am
por solid120
|
|
|
Modificacion de archivos de texto (ini)
Scripting
|
krizalidk
|
3
|
2,762
|
11 Noviembre 2013, 02:32 am
por Eleкtro
|
|
|
Modificacion de texto en batch
Scripting
|
santi810
|
2
|
2,380
|
11 Noviembre 2013, 13:39 pm
por santi810
|
|
|
modificacion de archivo y verificacion de existencia no cierra??? ayuda!!!
Programación C/C++
|
kerkox
|
3
|
2,396
|
5 Marzo 2014, 13:35 pm
por amchacon
|
|