| 
	
		|  Autor | Tema: ayuda para hacer un batch  (Leído 10,167 veces) |  
	| 
			| 
					
						| desdemx 
								
								 Desconectado 
								Mensajes: 8
								
								
								
								
								
								   | 
 
Hola, yo realmente no se hacer este tipo de archivos, solo los he usado alguna vez, pero tengo la necesidad de modificar mas de 800 archivos de texto y por ello pensé que seria mas fácil con un programa que haga una parte en automático.
 Lo que necesito es lo siguiente:
 
 Los archivos son de esta forma:
 
 123|456|789|012|345|123|456|789|012|345|123|456|789|012|345|123|456|789|012|345|123|456|789|012|345|123|456|789|012|345|123|456|789|012|345|123|456|789|012|345|123|456|789|012|345|123|456|789|012|345|123|456|789|012|345|123|456|789|012|345|
 
 Pero yo los necesito de esta forma:
 
 123|
 456|
 789|
 012|
 123|
 456|
 789|
 012|
 123|
 456|
 789|
 012|
 
 ¿Es posible hacerlo con un batch? Si se puede ¿como puedo hacerlo?
 
 De antemano muchas gracias.
 
 
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Eleкtro 
								Ex-Staff    Desconectado 
								Mensajes: 9.964
								
								   | 
 
Quizás no es el code más perfecto (Demasiado código), pero hace lo que pides.  :: Foro.ElHacker.Net 	For /F "tokens=*" %%a in ( 'type "%% #"') do (		Echo __________________ |  MORE	))  :LoopFor /F "tokens=%Next% ,1,* delims=| " %%a in ( 'Echo  "%STRING% "') do (	Echo %%b | FINDSTR "[0-9]"  || (Goto  :EOF))
  PD: Otra forma seria usar un FOR + Un Contador, Para ir mostrando cada bloque en 4x4 caracteres del texto.  Etc...
 Saludos.
 
 |  
						| 
								|  |  
								| « Última modificación: 23 Mayo 2012, 19:40 pm por EleKtro H@cker » |  En línea | 
 
 |  |  |  | 
			| 
					
						| desdemx 
								
								 Desconectado 
								Mensajes: 8
								
								
								
								
								
								   | 
 
Muchas gracias. Si funciona    , pero tengo algunos segmentos que son de mas de 3 numero y otros de menos incluso hay unos donde están los pipes juntos, ¿existe la posibilidad de que lo haga sin que tome en cuenta la cantidad de caracteres que hay entre cada pipe? Y por otra parte también requiero que queden los pipes al final de cada segmento. Por ejemplo de esta forma: 123| 45| 67890| | | 1| Te agradezco mucho nuevamente. |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Eleкtro 
								Ex-Staff    Desconectado 
								Mensajes: 9.964
								
								   | 
 
Si, un contador para mostrar solo los números... cuando tenga un rato lo hago si no se me adelanta alguien.
 salu2
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| desdemx 
								
								 Desconectado 
								Mensajes: 8
								
								
								
								
								
								   | 
 
Te lo agradezco mucho. |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Runex 
								
								 Desconectado 
								Mensajes: 192
								
								 
								http://tutogramacion.blogspot.com
								
								
								
								
								
								     | 
 
Si quieres te lo puedo hacer en python, espero tu respuesta y mañana en 5 minutos cuando venga del instituto lo tienes   |  
						| 
								|  |  
								|  |  En línea | 
 
 "No renunciaría al bambú.Nunca renuciaría a ti.
 No te compares con otros" "El me dijo:
 El bambú tenía un propósito diferente al del
 helecho, sin embargo eran necesarios y
 hacían del bosque un lugar hermoso".
 |  |  |  | 
			| 
					
						| desdemx 
								
								 Desconectado 
								Mensajes: 8
								
								
								
								
								
								   | 
 
Muchas gracias, no se cual o si haya algún inconveniente para ejecutarlo y que me funcione.
 Y por otra parte estuve revisando mas archivos y en algunos también hay texto, así que no solo son segmentos de puros numero, sino en algunos están combinados.
 
 De nuevo muchas gracias.
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Eleкtro 
								Ex-Staff    Desconectado 
								Mensajes: 9.964
								
								   | 
 
en algunos también hay texto, así que no solo son segmentos de puros numero, sino en algunos están combinados. El siguiente código separa los bloques cuando encuentra el caracter "|", Así que es independiente de si son números o texto... pero si algún bloque contiene un espacio, es posible que de error. EDIT:@Echo OFF
 :: editado, versión 2 del code
 :: Foro.ElHacker.Net
 
 setlocal enabledelayedexpansion
 
 For /F "tokens=*" %%# in ('Dir /B "*.txt" ^| FIND /V "NUEVO"') do (
 For /F "tokens=*" %%a in ('type "%%#"') do (
 Set /A Next=0
 Echo %%#:
 Echo __________________ | MORE
 Set "String=%%a"
 ECHO !String!> "%TEMP%\temp.txt"
 FOR %%? IN (%TEMP%\temp.txt) DO (SET /A longitud=%%~z? - 2)
 Call :Loop
 Echo+
 )
 )
 Goto :FIN
 
 :Loop
 For /F "tokens=*" %%a in ('Echo "%STRING%"') do (
 Set /A Next+=1
 If !NEXT! GTR %LONGITUD% (Goto :EOF)
 Echo "!STRING:~%NEXT%,1!" | FINDSTR "|" >NUL
 If !Errorlevel! EQU 1 (
 Set "BLOCK=!BLOCK!!STRING:~%NEXT%,1!"
 ) ELSE (
 If Defined BLOCK (Echo !BLOCK:^|=!^| & Echo !BLOCK:^|=!^|>>"%%~n#_NUEVO.txt")
 Set "BLOCK=!STRING:~%NEXT%,1!"
 )
 Call :Loop
 )
 Goto :EOF
 
 
 :FIN
 Pause
 Exit
 PD: Joder, lo facil que seria hacer esto en ruby con un "split" o en python xD Saludos |  
						| 
								|  |  
								| « Última modificación: 24 Mayo 2012, 09:58 am por EleKtro H@cker » |  En línea | 
 
 |  |  |  | 
			| 
					
						| orvtech 
								
								 Desconectado 
								Mensajes: 16
								
								 
								orvtech.com
								
								
								
								
								
								     | 
 
Hola, yo realmente no se hacer este tipo de archivos, solo los he usado alguna vez, pero tengo la necesidad de modificar mas de 800 archivos de texto y por ello pensé que seria mas fácil con un programa que haga una parte en automático.
 Lo que necesito es lo siguiente:
 
 Los archivos son de esta forma:
 
 123|456|789|012|345|123|456|789|012|345|123|456|789|012|345|123|456|789|012|345|123|456|789|012|345|123|456|789|012|345|123|456|789|012|345|123|456|789|012|345|123|456|789|012|345|123|456|789|012|345|123|456|789|012|345|123|456|789|012|345|
 
 Pero yo los necesito de esta forma:
 
 123|
 456|
 789|
 012|
 123|
 456|
 789|
 012|
 123|
 456|
 789|
 012|
 
 ¿Es posible hacerlo con un batch? Si se puede ¿como puedo hacerlo?
 
 De antemano muchas gracias.
 
 adapta esto a un loop: cat archivo-test.txt | tr '|' '\n' | awk '{print $0"|"}'Podria ser: UPDATE:for archivos in `ls *.txt`do cat $archivos |tr '|' '\n' | awk '{print $0"|"}'
 done
 Sorry, recién acabo de leer bien el titulo del post y lo que piden es un batch, no un bash    |  
						| 
								|  |  
								| « Última modificación: 24 Mayo 2012, 13:50 pm por orvtech » |  En línea | 
 
 |  |  |  | 
			| 
					
						| Runex 
								
								 Desconectado 
								Mensajes: 192
								
								 
								http://tutogramacion.blogspot.com
								
								
								
								
								
								     | 
 
Una solución rápida en python pero funcional    #!/usr/bin/env python# -*- coding: utf-8 -*-archivo,lista,acumulador = (open("archivox.txt","r"),[],"")for letra in archivo.read():	if letra != "|":		acumulador = acumulador + letra	else:		lista.append(acumulador)		acumulador = ""for elemento in lista:	print elemento + "|"archivo.close() 
 Y ésta sería otra alternativa haciendo uso de split, como dice mi compañero Elektro #!/usr/bin/env python# -*- coding: utf-8 -*-import stringarchivo = open("archivox.txt","r")lista = archivo.read().split("|")for elemento in lista:	print elemento.replace("\n","") + "|"archivo.close() 
 En ambas debes cambiar "archivox.txt" por el nombre de tu archivo   Un saludo, Runex. |  
						| 
								|  |  
								| « Última modificación: 24 Mayo 2012, 15:14 pm por Runex » |  En línea | 
 
 "No renunciaría al bambú.Nunca renuciaría a ti.
 No te compares con otros" "El me dijo:
 El bambú tenía un propósito diferente al del
 helecho, sin embargo eran necesarios y
 hacían del bosque un lugar hermoso".
 |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | ayuda para mostrar opciones en batch Scripting
 | Duweick | 4 | 4,875 |  3 Junio 2006, 11:18 am por Duweick
 |  
						|   |   | [Ayuda]Como podria hacer lo siguiente con batch? Scripting
 | Mamsaac | 3 | 3,472 |  19 Septiembre 2006, 15:18 pm por Division-x
 |  
						|   |   | Ayuda con mi codigo en batch para mandar txt a ftp... Scripting
 | __68_Zauron_Arg | 1 | 3,552 |  20 Marzo 2008, 20:18 pm por Fireball-CH
 |  
						|   |   | Batch para hacer backups? Scripting
 | _CrisiS_ | 1 | 3,145 |  10 Noviembre 2009, 12:39 pm por flony
 |  
						|   |   | [Batch]FullScreen - Ejecutar código ASM para hacer FullScreen usado Debug BY 3D1 Scripting
 | EddyW | 5 | 5,596 |  26 Marzo 2010, 02:39 am por invisible_hack
 |    |