Comando for /f : recuperación de un dato de un archivo
Resuelto
vayleme
Mensajes publicados
91
Estado
Miembro
-
vayleme Mensajes publicados 91 Estado Miembro -
vayleme Mensajes publicados 91 Estado Miembro -
Hola,
No consigo recuperar un dato contenido en una línea de un archivo de texto.
Así es como se ve el archivo.
dato : 1
) dato : 2
- dato : 3
$ dato : 4
el valor al final de la línea es indeterminado, consigo recuperar el dato de la última línea y de la penúltima con estos comandos:
Pero no encuentro los comandos para las dos primeras líneas.
Espero que puedan ayudarme.
--
Atentamente,
Vayleme
No consigo recuperar un dato contenido en una línea de un archivo de texto.
Así es como se ve el archivo.
dato : 1
) dato : 2
- dato : 3
$ dato : 4
el valor al final de la línea es indeterminado, consigo recuperar el dato de la última línea y de la penúltima con estos comandos:
for /f "tokens=2 delims=:" %%a in (archivo.txt) do set a=%%a
for /f "tokens=2 delims=: eol=$" %%b in (archivo.txt) do set b=%%b
Pero no encuentro los comandos para las dos primeras líneas.
Espero que puedan ayudarme.
--
Atentamente,
Vayleme
2 respuestas
-
Hola,
Hay un espacio entre el carácter especial y los datos, así que debería ser simple.
for /f "eol=: tokens=2 delims= " %%a in (fichero.txt) do set var=%%a
“La inteligencia artificial se define como el contrario de la estupidez natural.”-
Hola,
definitivamente me ayudas mucho estos últimos días Barnabé ^^ gracias nuevamente por tu respuesta, pero lamentablemente tu comando recupera el dato de la última línea.
aquí está el retorno del comando.for /f "eol=: tokens=2 delims= " %%a in (fichier.txt) do echo %%a
devuelve
1
2
3
4
y si hagofor /f "eol=: tokens=2 delims= " %%a in (fichier.txt) do set var=%%a
solo el "4" se encuentra en la variable. Solo quiero el "2" y otro comando para conservar solo el "1".- el archivo txt contiene las 4 líneas que escribí arriba, el objetivo es recuperar en 4 variables diferentes los valores al final de cada línea (1, 2, 3, 4) sabiendo que esos valores no son estáticos. Pero al final, acabo de encontrar ahora mismo, aunque es un poco un bricolaje, voy a poner mi solución en el post y dejo el tema abierto un día por si alguien tiene una mejor idea.
-
-
@echo off
cls
::recuperación de la última línea
for /f "tokens=2 delims=:" %%a in (fichier.txt) do set a=%%a
::copiar el archivo sin la última línea
for /f "tokens=* delims=: eol=$" %%e in (fichier.txt) do echo %%e >> %cd%\temp.txt
::pausa creación del archivo
timeout /nobreak /t 003 >nul
::recuperación de la penúltima línea
for /f "tokens=2 delims=:" %%b in (%cd%\temp.txt) do set b=%%b
::copiar el archivo temp sin la última línea
for /f "tokens=* delims=: eol=-" %%f in (%cd%\temp.txt) do echo %%f >> %cd%\tempp.txt
::pausa creación del archivo
timeout /nobreak /t 003 >nul
::recuperación de la segunda línea
for /f "tokens=2 delims=:" %%c in (%cd%\tempp.txt) do set c=%%c
::recuperación de la primera línea
for /f "tokens=2 delims=: eol=)" %%d in (%cd%\tempp.txt) do set d=%%d
::pausa antes de la eliminación de archivos
timeout /nobreak /t 002 >nul
::eliminar archivos
erase %cd%\temp.txt %cd%\tempp.txt
echo presiona una tecla para ver los valores !
pause >nul
echo %a%
echo %b%
echo %c%
echo %d%
echo.
echo presiona una tecla para salir.
pause >nul
exit
Atentamente,
Vayleme-
No estoy seguro de haberlo entendido bien, ¿te ayuda esto?
for /f "eol=$ tokens=1 delims=-)" %%a in (fichero.txt) do echo %%a
No muestra la última línea.- yep, funciona, solo hay que corregir dos pequeños errores:
for /f "eol=$ tokens=*" %%a in (fichier.txt) do (for /f "eol=- tokens=2 delims=:" %%g in ('echo %%a') do (set var=%%g)
Gracias por haber propuesto esta solución, nunca habría pensado en anidar varios for en un mismo comando, ¡me has enseñado algo más! ^^.
¡Gracias por tu ayuda!
Dado que se ha encontrado una solución eficaz, cierro este tema.
-