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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  tema(batch) de un txt,crear varios txt, renombrado
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: tema(batch) de un txt,crear varios txt, renombrado  (Leído 4,639 veces)
neila

Desconectado Desconectado

Mensajes: 4


Ver Perfil
tema(batch) de un txt,crear varios txt, renombrado
« en: 21 Febrero 2015, 16:26 pm »

   


 hola,
a ver si alguien puede echarme una mano,
voy a tratar de explicar lo que quiero, creo que no será imposible.

tengo un archivo .txt (de unas 40.000 líneas, numeradas del 1 al 490 repetidamente hasta el final).
necesito un ejecutable (bat), donde me divida el archivo en archivos de 490 líneas, que las 4 primeras líneas (no numeradas sean comunes a todos los archivos creados, que las 2 ultimas filas (no numeradas) sean comunes y que los nuevos archivos tengan el nombre del primero enumerados.

ZZZ                                               
 X0.0  Y0.0  Z30.0                             
M601                                           
M2
G0 Z-100.0
N1  G1 X240.1 Y324.9 Z3.6 F2
N2  G1 X239.5 Y325.5 Z4.9 F2
N3  G1 X238.8 Y326.1 Z4.9 F2
N4  G1 X238.2 Y326.8 Z2.4 F2
N5  G1 X237.6 Y327.4 Z1.4 F2
N6  G1 X247.5 Y317.5 F2
N490  G1 X240.7 Y324.3 Z0.5 F2
N1  G1 X240.1 Y324.9 Z3.6 F2
N2  G1 X239.5 Y325.5 Z4.9 F2
N3  G1 X238.8 Y326.1 Z4.9 F2
N4  G1 X238.2 Y326.8 Z2.4 F2
N5  G1 X237.6 Y327.4 Z1.4 F2
N6  G1 X237.0 Y328.0 Z0.9 F2
N490  G1 X236.4 Y328.6 Z0.7 F2
N1 G1 X235.7 Y329.2 Z3.3 F2
N2  G1 X235.1 Y329.8 Z4.1 F2
N3  G1 X234.5 Y330.5 Z0.8 F2
N4  G1 X233.9 Y331.1 Z1.7 F2
N5  G1 X233.3 Y331.7 Z4.9 F2
N6  G1 X232.6 Y332.3 Z3.7 F2
N490  G1 X232.0 Y332.9 Z1.1 F2
N1  G1 X231.4 Y333.6 Z0.6 F2
N2  G1 X230.8 Y334.2 Z0.6 F2
N3  G1 X230.2 Y334.8 Z4.2 F2
N4  G1 X229.6 Y335.4 Z5.0 F2
N5  G1 X228.9 Y336.0 Z5.0 F2
N6  G1 X228.3 Y336.7 Z5.0 F2
N490  G1 X226.5 Y338.5 Z1.0 F2
G0 Z-100.0
G0 Y0



en este ejemplo me tendrían que quedar 4 archivos.
deZZZ.txt, tienen que salir ZZZ1.txt, ZZZ2.txt, ZZZ3.txt, ZZZ4.txt
cada uno lleva:
                       X0.0  Y0.0  Z30.0
                     M601
                     M2
                     G0 Z-100.0
                     N1 ...............
                     N2 ..............
                     N3 .............
                     N4...............
                     N5...................
                     N6....................
                     N490...................
                     G0 Z-100.0
                     G0 Y0


     gracias de antemano






En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: tema(batch) de un txt,crear varios txt, renombrado
« Respuesta #1 en: 21 Febrero 2015, 16:35 pm »

qué tienes hecho?
qué no sabes?


el foro es para resolver dudas no para pedir trabajos o tarea hecha


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
neila

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: tema(batch) de un txt,crear varios txt, renombrado
« Respuesta #2 en: 21 Febrero 2015, 16:58 pm »

lo siento, no volverá a pasar
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: tema(batch) de un txt,crear varios txt, renombrado
« Respuesta #3 en: 21 Febrero 2015, 20:11 pm »

No te recomiendo utilizar una herramienta limitada como es Batch para este tipo de tareas, por no decir que además es muy lento al procesar texto.

Te muestro un ejemplo que puedes adaptar a tus necesidades por ti mismo:


Source


Código
  1. @Echo OFF & SetLocal EnableDelayedExpansion
  2.  
  3. Set    "inputFile=.\Archivo.txt"
  4. Set /A "fileCount=1"
  5.  
  6. Echo [+] ".\ZZZ%fileCount%.txt"
  7. For /F "UseBackQ Tokens=* Delims=" %%a In ("%inputFile%") Do (
  8.  
  9. Set "line=%%~a"
  10. Echo !line!
  11. (Echo !line!)>>".\zzzz!fileCount!.txt"
  12. If /I "!line:~0,4!" EQU "N490" (
  13. Set /A "fileCount+=1"
  14. Echo [+] ".\ZZZ!fileCount!.txt"
  15. )
  16.  
  17. )
  18.  
  19. Pause&Exit /B 0


Output


Código:
[+] ".\ZZZ1.txt"
ZZZ
 X0.0  Y0.0  Z30.0
M601
M2
G0 Z-100.0
N1  G1 X240.1 Y324.9 Z3.6 F2
N2  G1 X239.5 Y325.5 Z4.9 F2
N3  G1 X238.8 Y326.1 Z4.9 F2
N4  G1 X238.2 Y326.8 Z2.4 F2
N5  G1 X237.6 Y327.4 Z1.4 F2
N6  G1 X247.5 Y317.5 F2
N490  G1 X240.7 Y324.3 Z0.5 F2

[+] ".\ZZZ2.txt"
N1  G1 X240.1 Y324.9 Z3.6 F2
N2  G1 X239.5 Y325.5 Z4.9 F2
N3  G1 X238.8 Y326.1 Z4.9 F2
N4  G1 X238.2 Y326.8 Z2.4 F2
N5  G1 X237.6 Y327.4 Z1.4 F2
N6  G1 X237.0 Y328.0 Z0.9 F2
N490  G1 X236.4 Y328.6 Z0.7 F2

[+] ".\ZZZ3.txt"
N1 G1 X235.7 Y329.2 Z3.3 F2
N2  G1 X235.1 Y329.8 Z4.1 F2
N3  G1 X234.5 Y330.5 Z0.8 F2
N4  G1 X233.9 Y331.1 Z1.7 F2
N5  G1 X233.3 Y331.7 Z4.9 F2
N6  G1 X232.6 Y332.3 Z3.7 F2
N490  G1 X232.0 Y332.9 Z1.1 F2

[+] ".\ZZZ4.txt"
N1  G1 X231.4 Y333.6 Z0.6 F2
N2  G1 X230.8 Y334.2 Z0.6 F2
N3  G1 X230.2 Y334.8 Z4.2 F2
N4  G1 X229.6 Y335.4 Z5.0 F2
N5  G1 X228.9 Y336.0 Z5.0 F2
N6  G1 X228.3 Y336.7 Z5.0 F2
N490  G1 X226.5 Y338.5 Z1.0 F2

[+] ".\ZZZ5.txt"
G0 Z-100.0
G0 Y0
Presione una tecla para continuar . . .
En línea



neila

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: tema(batch) de un txt,crear varios txt, renombrado
« Respuesta #4 en: 21 Febrero 2015, 20:35 pm »

gracias, seguire tu consejo
En línea

neila

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: tema(batch) de un txt,crear varios txt, renombrado
« Respuesta #5 en: 1 Marzo 2015, 19:44 pm »

hola de nuevo y gracias por la ayuda.
ya he ajustado el bat a mis necesidades:
Código:
@Echo OFF & SetLocal EnableDelayedExpansion


cd\
cd %1



Set    "inputFile=.\%1.PRG"

Set /A "fileCount=1"

 

Echo [+] ".\%1%fileCount%.PRG"

For /F "UseBackQ Tokens=* Delims=" %%a In ("%inputFile%") Do (

 

Set "line=%%~a"

Echo !line!

(Echo !line!)>>".\%1!fileCount!.PRG"

If /I "!line:~0,4!" EQU "N490" (

Set /A "fileCount+=1"

Echo+

Echo [+] ".\%1!fileCount!.PRG"

)

 

  )

 

Pause&Exit /B 0


Ahora de los archivos nuevos creados necesito eliminar los comienzos de línea
N0,N1,N2,N3.....N490.
llevo varias horas intentándolo y solo he conseguido eliminar la N, con esto:

Código
  1. @echo off
  2. Setlocal EnableDelayedExpansion
  3. @echo off
  4. for /f %%a in ('dir /b *.*') do (call :camcomtb %%a)
  5. goto :EOF
  6. :camcomtb
  7. for /f "tokens=* delims=" %%i in (%1) do (set c=%%i&echo !c:N=!>> ZZZ1.PRG)
  8.  
  9. goto :EOF


por favor pido ayuda, soy muy novato.



« Última modificación: 1 Marzo 2015, 19:46 pm por Eleкtro » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: tema(batch) de un txt,crear varios txt, renombrado
« Respuesta #6 en: 1 Marzo 2015, 19:49 pm »

1. Utiliza las etiquetas GeShi para insertar código, esto es un foro y hay que respetar unas normas de publicación.



Puedes utilizar el comando FindStr para filtrar el archivo descartando lineas que empeicen por "X":

Código:
(Type "Archivo.txt" | FindStr /I /V "^N0 ^N1 ^N2 ^N3")> "Nuevo Archivo.txt

Lee sobre el uso de rexpresiones regulares (RegEx).

Saludos
En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines