ayuda programacion batch: uso del for /f
Publicado por juntacadaveres (5 intervenciones) el 03/04/2019 22:48:48
me han mandado el siguiente ejercicio:
Crea un fichero batch que muestre el siguiente menú
BUSQUEDA DE REGISTROS
1.- Nombre
2.- Apellido
3.- Teléfono
4.- Salir
La opción 1 pedirá un valor. Buscará en el fichero AGENDA.TXT, en el campo nombre
cualquier registro que contenga la cadena especificada. Ejemplo: si busco BE, localizará los
registros BERTA, ALBERTO, ABELARDO… Por cada registro encontrado mostrará:
Nombre
NOMBRE
Apellido
APELLIDO
Teléfono
TELEFONO
Los diferentes registros se separarán por una línea de guiones.
La opción 2 y 3 funcionan de forma similar.
La opción 4 vacía las variables y sale del programa.
el contenido del fichero es el siguiente:
jose:morales:41254
bob:dylan:124544
pepito:jimenez:6651454
susana:ochoa:124454
guillermo:paredes:4575
susel:roca:21145
tomas:palermo:4544
y mi codigo es el siguiente:
obviamente solo esta hecho hasta la primera parte
pero mi problema es que no funciona tal como me lo piden
ya que el resultado seria
NOMBRE:APELLIDO:TELEFONO
y a mi me lo piden de otra manera
nombre
NOMBRE
apellido
APELLIDO
telefono
TELEFONO
no sé como extraer el %%b ni el %%c en otro echo ya que ya no es posible usar el
ya que ni en el segundo token ni en el tercero no hay nada que coincida con %nomb%
no se como hacerlo.... necesito ayuda, por favor
Crea un fichero batch que muestre el siguiente menú
BUSQUEDA DE REGISTROS
1.- Nombre
2.- Apellido
3.- Teléfono
4.- Salir
La opción 1 pedirá un valor. Buscará en el fichero AGENDA.TXT, en el campo nombre
cualquier registro que contenga la cadena especificada. Ejemplo: si busco BE, localizará los
registros BERTA, ALBERTO, ABELARDO… Por cada registro encontrado mostrará:
Nombre
NOMBRE
Apellido
APELLIDO
Teléfono
TELEFONO
Los diferentes registros se separarán por una línea de guiones.
La opción 2 y 3 funcionan de forma similar.
La opción 4 vacía las variables y sale del programa.
el contenido del fichero es el siguiente:
jose:morales:41254
bob:dylan:124544
pepito:jimenez:6651454
susana:ochoa:124454
guillermo:paredes:4575
susel:roca:21145
tomas:palermo:4544
y mi codigo es el siguiente:
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
29
30
31
32
33
34
@echo off
rem ejercicio 9
setlocal enabledelayedexpansion
:menu
set nomb=
cls
echo -------------------------
echo - BUSQUEDA DE REGISTROS -
echo -------------------------
echo.
echo 1. Nombre
echo 2. Apellido
echo 3. Telefono
echo 4. Salir
echo.
:opt
set opt=
set /p opt="Selecciona una opcion: "
if /i "%opt%"=="1" goto opt1
if /i "%opt%"=="2" goto opt2
if /i "%opt%"=="3" goto opt3
if /i "%opt%"=="4" goto opt4
echo la opcion no es valida
pause>nul
goto menu
:opt1
set /p nomb="Buscar campo nombre: "
for /F "tokens=1,2,3 delims=:" %%a in (agenda.txt) do (
echo %%a %%b %%c | find "%nomb%"
)
pause>nul
goto menu
:fin
obviamente solo esta hecho hasta la primera parte
pero mi problema es que no funciona tal como me lo piden
ya que el resultado seria
NOMBRE:APELLIDO:TELEFONO
y a mi me lo piden de otra manera
nombre
NOMBRE
apellido
APELLIDO
telefono
TELEFONO
no sé como extraer el %%b ni el %%c en otro echo ya que ya no es posible usar el
1
|echo %%b find %nomb%
ya que ni en el segundo token ni en el tercero no hay nada que coincida con %nomb%
no se como hacerlo.... necesito ayuda, por favor
Valora esta pregunta


0