| 
	
		|  Autor | Tema: [AYUDA]Con Modificacion de Archivo de Texto  (Leído 6,153 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 TOTTAL000146,       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 TOTTAL000146,       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 TOTTAL000146,       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.TXT000145,       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ónEjemplos: 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 | 8,080 |  31 Octubre 2012, 00:59 am por BatchianoISpyxolo
 |  
						|   |   | Problema modificación archivo binario java Programación General
 | solid120 | 0 | 4,231 |  3 Junio 2013, 11:28 am por solid120
 |  
						|   |   | Modificacion de archivos de texto (ini) Scripting
 | krizalidk | 3 | 3,123 |  11 Noviembre 2013, 02:32 am por Eleкtro
 |  
						|   |   | Modificacion de texto en batch Scripting
 | santi810 | 2 | 2,785 |  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,754 |  5 Marzo 2014, 13:35 pm por amchacon
 |    |