Hola, mi duda es la siguiente:
¿Cómo extraer determinada linea de un archivo .txt (Da igual el formato)?
Creo que tiene que ser con una mezcla de For /F, tokens, y skip, pero no me sale :-\
Por ejemplo, quiero extraer la linea 32 de un archivo, ¿Cómo hago?
Gracias
EDITO:
Por ejemplo tengo esto:
Hola esto es
una prueba
de extracción. xD
Y quiero sacar la linea 2 por ejemplo, para que quede asi:
una prueba
Espero haber aclarado.
a ver, en tu idioma que significa "extraer"? con una herramienta que se llama "SED.exe" es muy manejable y puedes hacer lo que dices (supongo) y mas cosas pero ya no recuerdo como usarla bien tendria que mirarlo y aora no tengo timpo, saludos
Decía para hacerlo sin otro programa externo. :-\
@echo off
set/a n_line=%1-1
if %n_line% LSS 0 (exit /b -1)
if %n_line% EQU 0 (call:show) else (call:show " skip=%n_line%")
exit /b 0
:show
for /f "tokens=*%~1" %%%% in (file.txt) do (
echo.%%~%%
goto:eof
)
Ejemplo:
C:\Users\Pablo\Desktop> script 2
una prueba
C:\Users\Pablo\Desktop>
Gracias ya lo solucione así:
set /p skipes=Ingrese linea:
if %skipes%==0 FOR /F "tokens=*" %%A IN (mapa1.bat) DO (
set "var=%%A"&goto fin)
FOR /F "tokens=* skip=%skipes%" %%A IN (mapa1.bat) DO (
set "var=%%A"&goto fin)
:fin
pause>nul
De nada.
Por cierto, es mala costumbre poner varias órdenes en la misma línea con &, y es buena costumbre identar el código. :P
Hay una manera mucho más "sencilla":
@echo off
for /f "tokens=2 delims=:" %%_ in ('
^(
echo 2^,2l
echo e
^) ^| edlin /b FILEIN.TXT
') do (echo %%_)
El problema sería el delimitador, pero en fin, si no tienes problemas con el formato de texto, puedes usar esta manera.
Está interesante tu solución Leo, pero en Windows 7 no tengo edlin :P
Cita de: pablomi en 27 Enero 2011, 20:13 PM
Está interesante tu solución Leo, pero en Windows 7 no tengo edlin :P
Mmmm, no sabía que lo habían quitado. Mmmmmm. Supongo que se habrán declinado ya por el uso de powershell.
En powershell se podría hacer algo así:
$line = (Get-Content Test.txt)[1]
Sí, podría quedar así el script:
$numero_linea = [Console]::In.ReadLine(); #Input
$numero_linea-=1;
$line = (Get-Content file.txt)[$numero_linea]
echo $line
Gracias, igual prefiero mi solución compleja. Y seguiré usando los "&", no me molestan para nada. Gracias igual ^^
Cita de: galmito en 31 Enero 2011, 03:45 AM
Gracias, igual prefiero mi solución compleja. Y seguiré usando los "&", no me molestan para nada. Gracias igual ^^
Okay, sigue haciendo mal hábito.