Ms-Dos - ayuda programacion batch: uso del for /f

 
Vista:
Imágen de perfil de juntacadaveres
Val: 8
Ha aumentado su posición en 2 puestos en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

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:


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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

ayuda programacion batch: uso del for /f

Publicado por Antoni Masana (811 intervenciones) el 05/04/2019 10:20:37
Siguiendo el ejemplo de la opción 1 puedes hacer el resto.

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
@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 :EOF
   echo la opcion no es valida
   pause>nul
   goto menu
 
:opt1
   set /p nomb="Buscar campo nombre: "
   echo.
   for /F "tokens=1,2,3 delims=:" %%a in (agenda.txt) do Call :opt1_B %%a %%b %%c
   echo.
   pause
   goto menu
 
:Opt1_B
   set Nom=%1
   set ape=%2
   set tel=%3
 
   echo %Nom% | findstr /i "%nomb%" >nul 2>&1
   if %ErrorLevel% EQU 0 (
      echo Nombre..... %Nom%
      echo Apellido... %Ape%
      echo Telefono... %Tel%
      echo.
   )
   goto :EOF

Saludos.
\\//_
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