¿Como Meter en variable una determinada linea de un archivo?

Iniciado por sr_corsario, 22 Noviembre 2009, 21:29 PM

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

sr_corsario

Hello...

Buenas, otra vez incordiando al personal... sorry

Esta vez necesito obtener el contenido de la primera linea de un archivo y meterlo en variable y operar con ese valor. Cuando termine ese proceso necesito hacer lo mismo con la siguiente linea hasta que el archivo termine.




En el foro he encontado esto:

Meter la primera linea en una variable:

@echo off
<"file.txt" set /p "primera_linea="
set "primera_linea"


y
Pedir número de línea al usuario y mostrarla por pantalla:
Código:

@echo off
:code
set /p "linea=Linea : "
if not defined linea goto:code
set /a "_linea=0"
for /f "tokens=*" %%_ in ('type file.txt') do (
call:show %%_
)
goto:eof
:show
set /a "_linea+=1"
if %_linea%==%linea% echo %*
goto:eof


Con esto meto en variable la última linea del archivo...

For /f "useback tokens=*" %%R in ("idlist.txt") do (set ID=%%R)



Siento ser tan pesado... gracias por la ayuda.

Angel Doze

Hola sr_corsario,


Te puedo ayudar, pero se necesita de sed.exe, buscalo por la red, seguro lo encuentras

@ECHO OFF

<"file.txt" set /p "primera_linea="
set "primera_linea"

SET /P "LINE=Inserte el numero de linea que quiere visualizar:"

SED "%LINE%,%LINE%!d" file.txt

PAUSE


Espero que sea lo que necesitas...

Salu2!
Salu2!

sr_corsario

Gracias por responder.

Anoche... con el insomnio que tenía pensando en como lo podía hacer... se me ocurrió utilizar un programita llamado fcut (que corta cachos de archivo), lo utilicé para obtener una linea y crear el archivo de ella. Después, al solo tener una linea ya pude meterlo en variable... Seguidamente... copiaba lo que quedaba del archivo a otro e iniciaba el proceso hasta que me quedase sin datos en el archivo... no se si me explico...

bueno con esto:


@echo off

rem Con esto hago una copia del archivo original y utilizo la copia en las modificaciones
copy idlist.txt temp.bin
:ini
rem Le doy el valor 0 a la variable id
set id=0

rem Utilizo el programita fcut para cortar los 4 primeros bytes del archivo (cada linea son 4 bytes)
fcut /p1 /b0 /e4 temp.bin temp.001

rem Ahora obtengo el archivo menos la primera linea, por tanto cuando cada vez que se haga el proceso el archivo será cada vez mas pequeño
fcut /p1 /b6 temp.bin temp2.001

rem Meto el contenido de la linea (archivo obtenido arriba) en una variable
For /f "useback tokens=*" %%R in ("temp.001") do (set id=%%R)

if %id% EQU 0 del temp2.001
if %id% EQU 0 del temp.bin
if exist temp.001 del temp.001
if exist temp2.001 del temp.bin
if exist temp2.001 rename temp2.001 temp.bin

rem De esta manera termino si la variable me da 0
if %id% EQU 0 goto end

rem Con esto creo el archivo con contenido y nombre de variable
echo %id%>%id%.txt


rem Esta parte es para lo que necesito la variable
:****************************************
:Editando el valor del id
:****************************************
:Valores en el 3force.dol (el triiforce.dol que va en la SD/usb)

set idposition=294704
set /a idfin=%idposition%+4
:******************************************



fcut /p1 /b0 /e%idposition% 3force.dol ini.001
fcut /p1 /b%idfin% 3force.dol fin.001
fcut /p1 /b0 /e4 %id%.txt %id%.001

copy /b ini.001+%id%.001+fin.001 %id%.dol
if exist %id%.001 del %id%.001
if exist %id%.txt del %id%.txt
if exist fin.001 del fin.001
if exist ini.001 del ini.001

:********************************************


goto ini

:end

cls



Pero claro... lo que no quería era utilizar otra aplicación externa... pero bueno... de todas maneras utilizo el fcut para la otra parte...

Gracias

bolivianito


SET /P "linea=Inserte el numero de linea que quiere visualizar:"
set /a linea=%linea%-1


if %linea%==0 (FOR /F  %%A IN (c:\data.txt) DO (echo %%A&goto fin) )
FOR /F "skip=%linea%" %%A IN (c:\data.txt) DO (echo %%A&goto fin)


:fin
pause>nul




sr_corsario