Autor
|
Tema: ayuda para hacer un batch (Leído 9,071 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.878
|
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 ) ) :Loop For /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.878
|
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.878
|
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. @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 EDIT: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: for archivos in `ls *.txt` do cat $archivos |tr '|' '\n' | awk '{print $0"|"}' done UPDATE: 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 string archivo = 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,502
|
3 Junio 2006, 11:18 am
por Duweick
|
|
|
[Ayuda]Como podria hacer lo siguiente con batch?
Scripting
|
Mamsaac
|
3
|
3,059
|
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,236
|
20 Marzo 2008, 20:18 pm
por Fireball-CH
|
|
|
Batch para hacer backups?
Scripting
|
_CrisiS_
|
1
|
2,911
|
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,170
|
26 Marzo 2010, 02:39 am
por invisible_hack
|
|