Ms-Dos - Cortar un archivo en .bat

 
Vista:

Cortar un archivo en .bat

Publicado por Andrea (4 intervenciones) el 17/05/2018 00:01:58
Hola , necesito almacenar todo el contenido de un archivo en una variable y luego ir cortando o extrayendo por una cierta cantidad de caracteres y guardarlo en otro archivo. (la parte extraida debe guardarse una debajo de otra en .bat.

Estoy intentando algo asi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@echo off
setlocal enabledelayedexpansion
set SEPARATOR=/
set filecontent=
for /f "delims=" %%a in (temp.txt) do (
set  currentline=%%a
set filecontent=!filecontent!!currentline!
)
 
goto :extraer
exit
 
:extraer
 
 if %filecontent% equ "" goto fin
  set parte=%filecontent:~0,26%
  set filecontent=%filecontent:~26%
 
del /q temp.txt
del /q temp1.txt
 
echo %parte%>>tmp.txt
echo %filecontent%>>temp1.txt
type temp1.txt > temp.txt
 
goto extraer
 
:fin

Pero esto solo me funciona con archivos de tamaño pequeño , como puedo hacer para que funcione con archivo de gran tamaño.

Agradeceria mucho la ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Cortar un archivo en .bat

Publicado por Antoni Masana (811 intervenciones) el 17/05/2018 07:52:32
Revisando tu BAT he realizado algunos cambios

1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
setlocal enabledelayedexpansion
set file_content=
for /f "delims=" %%a in (temp.txt) do (
    set current_line=%%a
    set file_content=!file_content!!current_line!
)
:Extraer
    if [!file_content!] == [] goto:EOF
       set parte=%file_content:~0,26%
       set file_content=%file_content:~26%
       echo %parte%>>tmp.txt
       goto extraer

Lo he probado y funciona relativamente bien, el problema radica en que solo puedes tratar ficheros has 8 KB que es lo máximo que acepta una variable de entorno.

¿Se puede hacer con ficheros más grandes? Creo que si pero es complicado, si a priori sabemos la longitud de los datos leídos se puede hacer una trampa, pero si esto no es fiable hay que contar los datos leídos y eso ya se complica un poco más.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cortar un archivo en .bat

Publicado por Andrea (4 intervenciones) el 17/05/2018 16:41:14
Hay alguna forma de leer el contenido de un archivo sin almacenarlo en una variable ? funcionaria bien si leo el archivo caracter por caracter?
El archivo pesa alrededor de 300 mb .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Cortar un archivo en .bat

Publicado por Antoni Masana (811 intervenciones) el 17/05/2018 17:45:16
Primero si hay formas de leer el fichero y tratarlo.
Segundo si con un BAT consigues leer carácter a carácter dime cómo lo haces. Es más fácil que vuelen las ranas en parapente.
Los comandos para los ficheros BAT que tiene Windows dejan mucho que desear.
Herramientas disponibles para hacer lo que sea que quieres hacer y no necesitan compilador
- La única herramienta nativa de Windows que te puede servir es Visual Basic Script.
Otras (hay más pero estos son los que conozco y los puedes encontrar en Google)
- PERL
- PYTHON

Después hay un pequeño programa que se comporta como una instrucción de UNIX que se llama AWK tiene una sintaxis bastante simple y sirve para manejar ficheros de éxito con muy buenos resultados y puedes resolver muchas de las faltas de windows en la línea de comando.
El programa para Windows se llama mawk.exe sirve como comando de un bat.
Si te interesa esta última opción envíame el fichero, cuéntame que pretendes hacer y te lo resuelvo.


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cortar un archivo en .bat

Publicado por Andrea (4 intervenciones) el 17/05/2018 19:01:56
cuales son las formas de leer un archivo? , necesito leer un archivo de 300 mb y cortar el contenido de 1000 caracteres en 1000 caracteres, se puede realizar eso en vbs? en bat?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Cortar un archivo en .bat

Publicado por Antoni Masana (811 intervenciones) el 17/05/2018 22:40:41
Supongo que es posible hacerlo en VBS pero yo no se.

Se me acaba de ocurrir otra opción y si sabes Visual Basic y tienes Excel o Word lo podrías hacer con una macro.
Aquí si puedes leer carácter a carácter y tiene mayor potencia de trabajo.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cortar un archivo en .bat

Publicado por Andrea (4 intervenciones) el 18/05/2018 17:12:31
Muchas gracias por tus respuestas. Intentare con VBS
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar