Ms-Dos - Script .BAT: cómo leer un fichero línea a línea

   
Vista:

Script .BAT: cómo leer un fichero línea a línea

Publicado por Zaurada (1 intervención) el 10/02/2013 20:33:11
Buenos días/tardes/noches,

ya he hecho scripts bajo sistemas Linux, pero es mi primera vez con Windows (añoro los *.sh T_T)
Lo cierto es que sé lo que quiero hacer, pero no sé cómo traducirlo en lenguaje para .BAT.

Tengo un fichero de texto y lo que quiero hacer es tan sencillo como recorrerlo y guardarme, por iteración, en una variable el contenido de su línea.

for /F %i in (fichero.txt) do (
set nombre=%f
echo %i REM echo %nombre
)

Pero obviamente no me va porque obviamente no sé hacerlo bien.

Haciendo pruebillas, ni siquiera me funciona bien el echo, porque si hago esto:
for /F %i in (dirmy.txt) do (echo "Linea: %i")

lo que me devuelve es
(echo "Linea: contenido ficherooooo" )
Linea: contenido ficherooooo

¿Pero por qué me saca también la primera línea del propio echo?? no quiero que me muestre en una línea un echo del propio comando echo. Sólo que me muestre un echo de %i ....
(he probado a poner (echo off "Linea: %i") para que o salga el propio echo también, pero no me va...)

¿Y cómo puedo guardar el contenido de la línea en una variable y luego usarla??

Por último... si alguien me pudiera recomendar algún buen manual o página que muestre un poquito la nomenclatura para hacer estos scripts, lo agradecería mucho. Ya que en lo que fallo es que no sé cómo traducirlo a BAT y consola Windows.

Mil gracias.
Saludos y que tenga un buen día.
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
información
Otras secciones de LWP con contenido de Ms-Dos
- Cursos de Ms-Dos
- Temas de Ms-Dos
información
Cursos y Temas de Ms-Dos
- MS-DOS knowledge base articles
- Notas de Ms-Dos
- Manual MS-DOS
Imágen de perfil de Antoni Masana

Script .BAT: cómo leer un fichero línea a línea

Publicado por Antoni Masana (269 intervenciones) el 11/02/2013 08:43:37
Hola Zaurada ;

Para ejecutar un proceso FOR se pone un % si se ejecuta desde la linea de comandos y dos % si se ejecuta desde un BAT.

Para ejecutarlo desde la línea de comandos:

1
C:\> @FOR /F %A IN (fichero.txt) DO @ECHO Linea: %A


Para ejecutarlo desde un proceso BAT

1
2
@ECHO OFF
FOR /F %%A IN (fichero.txt) DO @ECHO Linea: %%A


Esto funciona pero toma la linea hasta el primer espacio en blanco

Esto toma toda la linea si no existe el separador "·"

1
2
@ECHO OFF
FOR /F "delims=·" %%A IN (fichero.txt) DO @ECHO Linea: %%A


Estos ejemplos muestran las lineas de un fichero. Si deseas algo más complejo yo lo que hago es llamar a otro Bat

1
2
@ECHO OFF
FOR /F "delims=·" %%A IN (fichero.txt) DO CALL Otro_Bat %%A


o a si mismo

1
2
3
4
5
6
7
8
@ECHO OFF
FOR /F "delims=·" %%A IN (fichero.txt) DO CALL:Tratar "%%A"
GOTO:EOF
 
:Tratar
   SET Reg=%~1
   ECHO %Reg%
   GOTO:EOF


La línea " SET Reg=%~1 " quita las comillas dobles.

Esto se puede simplificar o complicar dependiendo del contenido de fichero.txt y lo que tengas que realizar con él


El MSDOS a nivel de comandos y ejecución de los mismos esta en pañales si lo comparas con linux.
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 A.H.H

Script .BAT: cómo leer un fichero línea a línea

Publicado por A.H.H (199 intervenciones) el 13/02/2013 18:58:27
Hola un apunte solamente, ya que Antoni te lo ha explicado bien.

Tambien se puede poner Tokens , esto es para leer toda la linea entera aunque tenga espacios u otros caracteres.

1
2
3
@ECHO OFF
FOR /F "tokens=*" %%A IN (fichero.txt) DO @ECHO Linea: %%A
pause
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

Script .BAT: cómo leer un fichero línea a línea

Publicado por jmv0607@live.com (7 intervenciones) el 15/12/2014 21:24:07
Muy clara la explicación, perdón la insistencia, como guardar cada linea en una variable separada?

Gracias
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

Script .BAT: cómo leer un fichero línea a línea

Publicado por Aldo Cazzulini (1 intervención) el 27/09/2015 21:46:44
Para su conocimiento,
1.- Primera afirmación: los comandos Batch no manejan vectores o matrices como otros lenguajes, todo es a fuerza de variables únicas.
2.- Segunda afirmación: esta lee los archivos o las lineas de los archivos o la información y la coloca en lotes en el stack o pila y el proceso Batch puede leerlas una por una desde la pila al batch.
Atencion esto lo deduje despues de invertir dias en averiguar como funciona.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Script .BAT: cómo leer un fichero línea a línea

Publicado por Fidelk K. Arias S. HachaNov07@gmail.com (1 intervención) el 08/04/2016 15:52:17
Yo lo hice, lo logré.
Lo que hacía era tomar/leer las todas lineas de un .txt con un FOR, cada línea se almacenaba en una varible.
Luego cuando ya tenía todas las líneas almacenadas en variables las imprimia sobreescribiendo el mismo .txt o en otro .txt

Solo encontré dos problemillas las lineas vacias en el .txt original eran suprimidas en .txt final y había algún caracter mas que desaparecía
creo que era ! o # una de ellos... aunque tal ves algunos mas, no hice esa prueba.

CONTEO DE LINEAS
Lo primero era hacer un for que lea linea a linea el .txt, y al mismo tiempo que las muestre y las vaya contando
algo así... (echo %%lin)&(con=con+1) luego al final con tendría el numero total de líneas.

LINEAS EN VARIABLES #
Luego otra ves con un for, leía línea a línea el .txt pero esta ves no las contaba, sino mas bien las almacenaba en una variable V%num% o V!num! no rcuerdo claramente. num era la variable que se iba incrementando hasta con
Y entonces en cada lectura de línea se irian creando
V1=%%lin
V2=%%lin
V3=%%lin
.
.
hasta llegar a V!con! la ultima linea.
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

Script .BAT: cómo leer un fichero línea a línea

Publicado por john (1 intervención) el 03/08/2016 16:30:15
iniciasted bien el "for" tiene parametros como "delims" ; bueno pero puedes probar con esto

for /F "delims=" %a in (texto.txt) do (echo %a)

el parametro "delims" es para que haga un salto por cada espacio o signo , . ; - etc que anteceden en una linea o lineas
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