tema(batch) de un txt,crear varios txt, renombrado

Iniciado por neila, 21 Febrero 2015, 16:26 PM

0 Miembros y 1 Visitante están viendo este tema.

neila

   


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





engel lex

qué tienes hecho?
qué no sabes?


el foro es para resolver dudas no para pedir trabajos o tarea hecha
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


Eleкtro

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 (dos) [Seleccionar]
@Echo OFF & SetLocal EnableDelayedExpansion

Set    "inputFile=.\Archivo.txt"
Set /A "fileCount=1"

Echo [+] ".\ZZZ%fileCount%.txt"
For /F "UseBackQ Tokens=* Delims=" %%a In ("%inputFile%") Do (

Set "line=%%~a"
Echo !line!
(Echo !line!)>>".\zzzz!fileCount!.txt"
If /I "!line:~0,4!" EQU "N490" (
Set /A "fileCount+=1"
Echo+
Echo [+] ".\ZZZ!fileCount!.txt"
)

)

Pause&Exit /B 0



Output



[+] ".\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 . . .








neila


neila

#5
hola de nuevo y gracias por la ayuda.
ya he ajustado el bat a mis necesidades:
@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 (dos) [Seleccionar]
@echo off
Setlocal EnableDelayedExpansion
@echo off
for /f %%a in ('dir /b *.*') do (call :camcomtb %%a)
goto :EOF
:camcomtb
for /f "tokens=* delims=" %%i in (%1) do (set c=%%i&echo !c:N=!>> ZZZ1.PRG)

goto :EOF



por favor pido ayuda, soy muy novato.




Eleкtro

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":

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

Lee sobre el uso de rexpresiones regulares (RegEx).

Saludos