- , ya me había hecho ilusiones con printf, pero veo que mi windows 8 no lo trae. Supongo que srWhiteSkull se refiere a Linux-Bash.
- En windows yo estaba planteándome el siguiente FOR:
-- Pero veo que el FOR de srWhiteSkull es más eficiente al matar varios pájaros de un solo tiro, aunque puede ser más complicado agregar más instrucciones según convenga, como validaciones, bifurcaciones, etc.
-- Mi implementación final sería:
- En windows yo estaba planteándome el siguiente FOR:
Código (dos) [Seleccionar]
FOR /F "tokens=1,2,3 delims=:" %%a IN (agenda.txt) DO (
ECHO %%a | FIND "%nomb%" >nul
IF NOT ERRORLEVEL 1 (
ECHO Nombre:
ECHO %%a
ECHO Apellido:
ECHO %%b
ECHO Telefono:
ECHO %%c
)
)
-- Pero veo que el FOR de srWhiteSkull es más eficiente al matar varios pájaros de un solo tiro, aunque puede ser más complicado agregar más instrucciones según convenga, como validaciones, bifurcaciones, etc.
-- Mi implementación final sería:
Código (dos) [Seleccionar]
@ECHO OFF
REM ejercicio 9
:menu
CLS
ECHO -------------------------
ECHO - BUSQUEDA DE REGISTROS -
ECHO -------------------------
ECHO.
ECHO 1. Nombre
ECHO 2. Apellido
ECHO 3. Telefono
ECHO 4. Salir
ECHO.
SET "encontrado="
SET /P opt="Selecciona una opcion: "
IF %opt% EQU 1 GOTO opt1
IF %opt% EQU 2 GOTO opt2
IF %opt% EQU 3 GOTO opt3
IF %opt% EQU 4 GOTO opt4
ECHO Opcion no valida
GOTO reiniciar
:opt1
SET /P "patron=Buscar por campo Nombre: "
FOR /F "tokens=1,2,3 delims=:" %%a IN (agenda.txt) DO (
ECHO %%a | FIND /I "%patron%" >nul && CALL :imprimir %%a %%b %%c
)
GOTO reiniciar
:opt2
SET /P "patron=Buscar por campo Apellido: "
FOR /F "tokens=1,2,3 delims=:" %%a IN (agenda.txt) DO (
ECHO %%b | FIND /I "%patron%" >nul && CALL :imprimir %%a %%b %%c
)
GOTO reiniciar
:opt3
SET /P "patron=Buscar por campo Telefono: "
FOR /F "tokens=1,2,3 delims=:" %%a IN (agenda.txt) DO (
ECHO %%c | FIND /I "%patron%" >nul && CALL :imprimir %%a %%b %%c
)
GOTO reiniciar
:opt4
SET "opt="
SET "patron="
SET "encontrado="
EXIT
:imprimir
SET "encontrado=SI"
ECHO --------------------
ECHO Nombre:
ECHO %1
ECHO Apellido:
ECHO %2
ECHO Telefono:
ECHO %3
ECHO --------------------
GOTO:EOF
:reiniciar
IF NOT "%encontrado%"=="SI" ECHO No se han encontrado ocurrencias
PAUSE >nul
GOTO menu