choice - Permitir al usuario elegir

Mantenido el

Al usar el símbolo del sistema o archivos por lotes, a menudo es necesario recibir entradas del usuario para bifurcar el procesamiento.

Sin embargo, permitir entradas libres puede causar errores debido a entradas no intencionadas.

En esta página se presenta el uso básico y ejemplos del comando choice, que solo acepta las teclas que se especifiquen.

¿Qué es el comando choice?

El comando choice muestra un mensaje que solicita al usuario pulsar una de las teclas especificadas y permite bifurcar el procesamiento según la tecla pulsada.

El uso básico del comando choice es el siguiente:

choice [/c <teclas>] [/n] [/cs] [/t <segundos> /d <tecla predeterminada>] [/m <mensaje>]

También se puede usar sin opciones, en cuyo caso se verá de la siguiente manera:

- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>choice
[Y,N]?

La tecla pulsada se almacena en la variable %errorlevel% como un número que indica su posición entre las opciones. Se explica en detalle más adelante.

Opciones del comando choice

El comando choice tiene las siguientes opciones:

OpciónDescripción
/c <teclas>Especifica las teclas que el usuario puede elegir. El valor predeterminado es YN (Y: sí, N: no).
/nNo muestra las opciones ([Y,N]?) después del mensaje.
/csDistingue entre mayúsculas y minúsculas en las teclas. De forma predeterminada no se distinguen.
/t <segundos>Segundos (0 a 9999) que se esperan antes de seleccionar automáticamente la opción predeterminada si no se introduce nada. Debe usarse junto con /d.
/d <tecla>Especifica la tecla que se selecciona al agotarse el tiempo. Debe ser una de las teclas de /c y usarse junto con /t.
/m <cadena>Especifica el mensaje que se muestra en el aviso.

Si no se especifica /t, el comando espera indefinidamente hasta que el usuario pulse una tecla.

Uso específico del comando choice

Bifurcar el procesamiento según la elección del usuario

El uso más básico del comando choice es bifurcar el procesamiento según la elección del usuario.

En el siguiente código de ejemplo, si el usuario pulsa Y se muestra Yes, y si pulsa N se muestra No.

@echo off
setlocal

choice /c YN /m "Yes or No?"

if %errorlevel% == 1 (
  echo Yes
) else (
  echo No
)

endlocal

Al ejecutar el archivo por lotes anterior, se muestra lo siguiente:

- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>
Yes or No?[Y,N]?
おすすめ書籍※ 広告を含む場合があります
中小企業経営者のためのRPA入門 RPA導入を成功させる方法

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超入門

60分でわかる! AIエージェント 超入門

コマンドラインの黒い画面が怖いんです。

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

Si el usuario pulsa Y, se muestra lo siguiente:

- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>
Yes or No?[Y,N]? Y
Yes
C:\users\user>

Obtener la selección desde %errorlevel%

El comando choice almacena en %errorlevel% no la tecla en sí, sino la posición (empezando por 1) de la tecla elegida entre las especificadas en /c.

Por ejemplo, con /c YN, elegir Y da 1 y elegir N da 2. Con /c ABC, A es 1, B es 2 y C es 3.

Si el usuario interrumpe con Ctrl + C, el valor es 0.

Cuando hay tres o más opciones, combinarlo con goto mantiene la bifurcación legible.

@echo off
setlocal

choice /c ABC /m "Elija una acción. [A:Copiar, B:Mover, C:Cancelar]"

if %errorlevel% == 1 goto copy
if %errorlevel% == 2 goto move
goto end

:copy
echo Se ejecuta la copia.
goto end

:move
echo Se ejecuta el movimiento.

:end
endlocal

El valor de %errorlevel% se sobrescribe al ejecutar otros comandos. Compruébalo justo después de choice o guárdalo en una variable antes de usarlo.

Mostrar un mensaje y opciones personalizados

Combinando las opciones /c y /m se puede mostrar un mensaje y opciones personalizados.

En el siguiente código de ejemplo, se pide al usuario que elija su fruta favorita y se muestra la fruta seleccionada.

@echo off
setlocal

choice /c AB /m "Elija su fruta favorita. [A: Manzana, B: Plátano]"

if %errorlevel% == 1 (
  echo Manzana
) else (
  echo Plátano
)

endlocal

Al ejecutar el archivo por lotes anterior, se muestra lo siguiente:

- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>
Elija su fruta favorita. [A: Manzana, B: Plátano]? [A,B]? A
Manzana
C:\users\user>

Habilitar el tiempo de espera

Combinando las opciones /t y /d, se puede seleccionar automáticamente la opción predeterminada si no hay entrada durante cierto tiempo.

En el siguiente código de ejemplo, las opciones Y/N se muestran durante 5 segundos y, si no se elige ninguna, se selecciona N y se muestra No.

@echo off
setlocal

choice /c YN /t 5 /d N /m "Yes or No?"

if %errorlevel% == 1 (
  echo Yes
) else (
  echo No
)

endlocal

Al ejecutar el archivo por lotes anterior, si se pulsa una tecla el proceso se ejecuta como de costumbre, pero si no se introduce nada durante 5 segundos, se muestra No de la siguiente manera:

- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>
Yes or No?[Y,N]? N
No
C:\users\user>

Prueba de confirmación

Por último, pongamos a prueba lo aprendido.

La prueba se completa en el lado del cliente, por lo que no se envían datos al servidor.

Pregunta 1

¿Para qué se utiliza el comando choice en el símbolo del sistema?

回答がサーバーに送信されることはありません
Pregunta 2

Después de recibir la entrada del usuario con el comando choice, ¿cómo se obtiene el resultado?

回答がサーバーに送信されることはありません
Pregunta 3

¿Cuál es el mensaje de solicitud predeterminado del comando choice?

回答がサーバーに送信されることはありません
#Símbolo del sistema #Archivos por lotes #Línea de comandos #Comando #Entrada del usuario