elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  ayuda para hacer un batch
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: ayuda para hacer un batch  (Leído 8,433 veces)
desdemx

Desconectado Desconectado

Mensajes: 8


Ver Perfil
ayuda para hacer un batch
« en: 23 Mayo 2012, 17:56 pm »

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 Desconectado

Mensajes: 9.813



Ver Perfil
Re: ayuda para hacer un batch
« Respuesta #1 en: 23 Mayo 2012, 19:35 pm »

Quizás no es el code más perfecto (Demasiado código), pero hace lo que pides.

Código
  1. @Echo OFF
  2.  
  3. :: Foro.ElHacker.Net
  4.  
  5. For /F "tokens=*" %%# in ('Dir /B "*.txt"') do (
  6. For /F "tokens=*" %%a in ('type "%%#"') do (
  7. Echo %%#: | MORE
  8. Set "String=000^|%%a"
  9. Set /A Next=2
  10. Call :Loop
  11. Echo __________________ | MORE
  12. )
  13. )
  14.  
  15.  
  16. :Loop
  17. For /F "tokens=%Next%,1,* delims=|" %%a in ('Echo "%STRING%"') do (
  18. Set /A "BLOCK=%%b" 2>NUL
  19. Echo %%b | FINDSTR "[0-9]"  || (Goto :EOF)
  20. Set /A Next+=1
  21. Call :Loop
  22. )



PD: Otra forma seria usar un FOR + Un Contador, Para ir mostrando cada bloque en 4x4 caracteres del texto.
Código
  1. Echo %Var:~4,4%
  2. Echo %Var:~8,4%
  3. Echo %Var:~12,4%
  4. Etc...

Saludos.


« Última modificación: 23 Mayo 2012, 19:40 pm por EleKtro H@cker » En línea

desdemx

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: ayuda para hacer un batch
« Respuesta #2 en: 23 Mayo 2012, 20:08 pm »

Muchas gracias.

Si funciona  :D, 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 Desconectado

Mensajes: 9.813



Ver Perfil
Re: ayuda para hacer un batch
« Respuesta #3 en: 23 Mayo 2012, 20:16 pm »

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 Desconectado

Mensajes: 8


Ver Perfil
Re: ayuda para hacer un batch
« Respuesta #4 en: 23 Mayo 2012, 20:20 pm »

Te lo agradezco mucho.
En línea

Runex

Desconectado Desconectado

Mensajes: 192


http://tutogramacion.blogspot.com


Ver Perfil WWW
Re: ayuda para hacer un batch
« Respuesta #5 en: 23 Mayo 2012, 21:03 pm »

Si quieres te lo puedo hacer en python, espero tu respuesta y mañana en 5 minutos cuando venga del instituto lo tienes :D
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 Desconectado

Mensajes: 8


Ver Perfil
Re: ayuda para hacer un batch
« Respuesta #6 en: 23 Mayo 2012, 21:49 pm »

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 Desconectado

Mensajes: 9.813



Ver Perfil
Re: ayuda para hacer un batch
« Respuesta #7 en: 24 Mayo 2012, 09:41 am »

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.

Código:
@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 Desconectado

Mensajes: 16


orvtech.com


Ver Perfil WWW
Re: ayuda para hacer un batch
« Respuesta #8 en: 24 Mayo 2012, 13:48 pm »

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:
Código:
cat archivo-test.txt | tr '|' '\n' | awk '{print $0"|"}'

Podria ser:
Código:
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  :huh:
« Última modificación: 24 Mayo 2012, 13:50 pm por orvtech » En línea

Runex

Desconectado Desconectado

Mensajes: 192


http://tutogramacion.blogspot.com


Ver Perfil WWW
Re: ayuda para hacer un batch
« Respuesta #9 en: 24 Mayo 2012, 14:11 pm »

Una solución rápida en python pero funcional :)


Código
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. archivo,lista,acumulador = (open("archivox.txt","r"),[],"")
  4. for letra in archivo.read():
  5. if letra != "|":
  6. acumulador = acumulador + letra
  7. else:
  8. lista.append(acumulador)
  9. acumulador = ""
  10. for elemento in lista:
  11. print elemento + "|"
  12. archivo.close()
  13.  

Y ésta sería otra alternativa haciendo uso de split, como dice mi compañero Elektro

Código
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import string
  4. archivo = open("archivox.txt","r")
  5. lista = archivo.read().split("|")
  6. for elemento in lista:
  7. print elemento.replace("\n","") + "|"
  8. archivo.close()
  9.  

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".
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda para mostrar opciones en batch
Scripting
Duweick 4 4,291 Último mensaje 3 Junio 2006, 11:18 am
por Duweick
[Ayuda]Como podria hacer lo siguiente con batch?
Scripting
Mamsaac 3 2,798 Último mensaje 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,039 Último mensaje 20 Marzo 2008, 20:18 pm
por Fireball-CH
Batch para hacer backups?
Scripting
_CrisiS_ 1 2,750 Último mensaje 10 Noviembre 2009, 12:39 pm
por flony
[Batch]FullScreen - Ejecutar código ASM para hacer FullScreen usado Debug BY 3D1
Scripting
EddyW 5 4,879 Último mensaje 26 Marzo 2010, 02:39 am
por invisible_hack
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines