Ms-Dos - Solicitar valor temporalmente o pasar a uno por defecto

 
Vista:

Solicitar valor temporalmente o pasar a uno por defecto

Publicado por Manuel (3 intervenciones) el 04/10/2017 12:29:56
Hola buenos días a todos

una función básica para solicitar un valor al usuario podemos hacerlo así:

:SOLICITAR_VALOR
set /p VALOR= Introduzca numero de horas [0-24]:
ECHO Valor introducido %VALOR%

La cuestión es la siguiente:
¿Hay alguna forma o código que espere unos segundos y si no se introduce ningún valor tome uno por defecto y continúe el código?

Gracias.
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.389
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Solicitar valor temporalmente o pasar a uno por defecto

Publicado por Antoni Masana (649 intervenciones) el 05/10/2017 06:20:57
Si, la hay. Lo malo es que solo sirve para respuestas del tipo S/N u opciones de un solo carácter

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
50
51
52
53
54
55
C:\>choice /?
 
CHOICE [/C opciones] [/N] [/CS] [/T tiempo de espera /D opción] [/M texto]
 
Descripción:
    Esta herramienta permite que los usuarios seleccionen un elemento de una
    lista de opciones y devuelve el índice de la opción seleccionada.
 
Lista de parámetros:
   /C   opciones          Especifica la lista de opciones que se va a crear.
                       La lista predeterminada es "YN".
 
   /N                     Oculta la lista de opciones en la pregunta.
                       Se muestra el mensaje antes que la pregunta
                       y las opciones están todavía habilitadas.
 
   /CS                    Habilita las opciones que distinguen entre mayúsculas
                          y minúsculas para que puedan seleccionarse.
                       De manera predeterminada, la utilidad no distingue
                       entre mayúsculas y minúsculas.
 
   /T   tiempo de espera  Número de segundos de pausa antes de que se elija
                       una opción predeterminada. Los valores permitidos
                       están comprendidos entre 0 y 9999. Si se especifica
                       0, no habrá pausa y se seleccionará la opción
                       predeterminada.
 
   /D   opción            Especifica la opción predeterminada después de nnnn
                       segundos. Carácter debe estar en el conjunto
                       especificado de opciones por la opción /C y también
                       debe especificarse nnnn con /T.
 
   /M   texto             Especifica el mensaje que se mostrará antes
                       de la pregunta. Si no se especifica, la utilidad
                       muestra sólo una pregunta.
 
   /?                     Muestra este mensaje de ayuda.
 
   NOTA:
   La variable de entorno ERRORLEVEL está establecida como el índice de la
   clave que se seleccionó en el conjunto de opciones. La primera opción
   devuelve un valor de 1, la segunda un valor de 2 y así sucesivamente.
   Si el usuario presiona una clave que no sea una opción válida, la
   herramienta emite un sonido de advertencia. Si la herramienta detecta una
   condición de error, devuelve un valor ERRORLEVEL de 255. Si el usuario
   presiona CTRL+PAUSA o CTRL+C, la herramienta devuelve un valor
   ERRORLEVEL 0. Cuando el usuario usa parámetros ERRORLEVEL en un
   programa por lotes, los enumera en orden decreciente.
 
Ejemplos:
   CHOICE /?
   CHOICE /C YNC /M "Presione Y para Sí, N para No o C para Cancelar."
   CHOICE /T 10 /C ync /CS /D y
   CHOICE /C ab /M "Seleccione a para opción 1 y b para opción 2."
   CHOICE /C ab /N /M "Seleccione a para opción 1 y b para opción 2."

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

Solicitar valor temporalmente o pasar a uno por defecto

Publicado por Manuel (3 intervenciones) el 05/10/2017 09:36:34
Funciona bien, pero no puedo poner a partir del 0-9...

Es una pena que no sea un comando mas potente...

:SOLICITAR_VALOR
CHOICE /C 1234567890 /CS /T 5 /D 3 /M "Introduzca numero de horas [0-24] "
ECHO Valor introducido %ERRORLEVEL%
set /a VALOR=%ERRORLEVEL%
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
Imágen de perfil de Antoni Masana
Val: 1.389
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Solicitar valor temporalmente o pasar a uno por defecto

Publicado por Antoni Masana (649 intervenciones) el 05/10/2017 11:58:19
Puedes probar esto:

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
@echo off
cls
set opc_1=120
set Opc_2=1234567890
set Opc_3=1230
 
set texto_1=Introduzca el 1º digito de la hora [00-23]:
set texto_2=Introduzca el 2º digito de la hora [00-23]:
 
: -----Solicida decena
 
CHOICE /C %Opc_1% /T 5 /D 0 /N /M "%Texto_1%"
set DEC=%ErrorLevel%
IF "%DEC%" == "3" set Dec=0
 
: -----Solicida Unidad
 
IF "%Dec%" == "2"  goto Cuatro
   CHOICE /C %opc_2% /T 5 /D 0 /N /M "%Texto_2%"
   set UNI=%ErrorLevel%
   IF "%Uni%" == "10" set Uni=0
   GOTO Sigue
 
:Cuatro
   CHOICE /C %Opc_3% /T 5 /D 0 /N /M "%Texto_2%"
   set UNI=%ErrorLevel%
   IF "%Uni%" == "4" set Uni=0
 
:Sigue
   set Hora=%Dec%%Uni%
   echo.
   echo.
   echo.La hora introducida es %Hora%
   echo.
   echo.

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