CHOICE
Exibe uma mensagem de aviso especificada, efetua uma pausa para o usuário escolher entre um conjunto de teclas especificado e fornece um parâmetro ERRORLEVEL para um programa de lote. Este comando pode ser utilizado somente em programas em lote.
Para maiores informações sobre o parâmetro ERRORLEVEL, consulte o comando <IF>.
Sintaxe :
CHOICE [/C[:]teclas] [/N] [/S] [/T[:]c,nn] [texto]
Parâmetros
texto
Especifica o texto a ser exibido antes de um aviso. Será necessário inserir aspas somente se você incluir um caractere de opção (\) como parte do texto antes de um aviso. Se um texto não for especificado, CHOICE exibirá somente um aviso.
parâmetros
/C[:]teclas
Especifica as teclas permitidas no aviso. Quando exibidas, as teclas serão separadas por vírgulas, estarão entre colchetes ([]), e serão seguidas de um ponto de interrogação. Se a opção /C não for especificada, CHOICE utilizará SN como padrão. Os dois pontos (:) são opcionais.
/N
Faz com que CHOICE não exiba o aviso. O texto antes do aviso, entretanto, ainda será exibido. Se você especificar a opção /N, as teclas especificadas ainda estarão válidas.
/S Faz com que CHOICE considere a combinação de maiúsculas/minúsculas. Se a opção /S não for especificada, CHOICE aceitará a letra maiúscula ou minúscula para qualquer uma destas teclas especificada pelo usuário.
/T[:]c,nn
Faz com que CHOICE efetue uma pausa um numero específico de segundos antes de voltar para uma tecla padrão especificada. Os valores para a opção /T são: c Especifica o caractere padrão que deve ser utilizado após nn segundos. O caractere deve constar no conjunto de parâmetros especificado na opção /C.
nn
Especifica o número de segundos para a pausa. Os valores aceitos estão entre 0 e 99. Se 0 for especificado, nenhuma pausa será efetuada antes da utilização do valor padrão.
Exemplos :
O que será visto pelo usuário quando você utilizar CHOICE em um arquivo de lote
Se você utilizar a seguinte sintaxe em um arquivo de lote,
choice /c:snc
o usuário verá a seguinte informação quando CHOICE for iniciado:
[S,N,C]?
Se você adicionar texto … sintaxe,
choice /c:snc Sim, Não ou Continuar
o usuário verá a seguinte informação quando CHOICE for iniciado:
Sim, Não ou Continuar [S,N,C]?
O que será visto pelo usuário se você omitir um aviso
Se, como no exemplo a seguir, você utilizar a opção /N para omitir o aviso em um programa de lote,
choice /n Sim, Não ou Continuar?
o usuário verá somente o texto que você especificar quando CHOICE for iniciado:
Sim, Não ou Continuar?
O que será visto pelo usuário se você utilizar a opção T
Se você utilizar a sintaxe seguinte em um programa de lote,
choice /c:snc /t:n,5
o usuário verá a seguinte informação quando CHOICE for iniciado:
[S,N,C]?
Se, após 5 segundos, o usuário não pressionar uma tecla, CHOICE escolherá N e fornecerá o valor 2 de ERRORLEVEL. Se o usuário pressionar uma tecla antes de 5 segundos, CHOICE fornecerá o valor correspondente à escolha do usuário.
Para que a opção da desfragmentarão da unidade C esteja disponível quando você inicializa o computador, adicione as seguintes linhas no arquivo
AUTOEXEC.BAT:
choice Defrag drive /ty,5
if errorlevel 2 goto IgnoraDefrag
defrag c:
:IgnoraDefrag
Se você pressionar N dentro de 5 segundos, DEFRAG não será executado e CHOICE fornecerá o valor 2 de ERRORLEVEL. Se você não pressionar N dentro de 5 segundos ou se escolher S, DEFRAG será executado na unidade C.
Utilizando CHOICE em um programa de lote
O seguinte programa de lote demonstra como utilizar a opção CHOICE para a seleção de um destes três programas: MS-DOS Editor, Microsoft antivírus ou Microsoft Backup.
Observe que as instruções IF ERRORLEVEL estão listadas em ordem decrescente. O MS-DOS considera a instrução IF como verdadeira se o parâmetro de ERRORLEVEL fornecido por CHOICE for maior que ou igual ao parâmetro especificado no comando IF.
@echo off
cls
echo.
echo A MS-DOS Editor
echo B Microsoft Anti-Virus
echo C Microsoft Backup
echo.
choice /c:abc Escolha uma opção
if errorlevel 3 goto MSBackup
if errorlevel 2 goto Msav
if errorlevel 1 goto Edit
:Edit
edit
goto Fim
:Msav
msav
goto Fim
:Msbackup
msbackup
goto Fim
:Fim
Observação
Parâmetros para ERRORLEVEL
A primeira tecla que você designar fornecer o valor 1, a segunda o valor 2, a terceira o valor 3 e assim por diante. Se o usuário pressionar uma tecla que não esteja entre as teclas que você designou, CHOICE emitirá um sinal de aviso (isto é enviará um caractere BEL, ou 07h, para o console).
Se CHOICE detectar uma condição de erro, o valor de ERRORLEVEL 255 será
fornecido. Se o usuário pressionar CTRL+BREAK ou CTRL+C, CHOICE fornecerá o valor de ERRORLEVEL 0.
Ao se utilizar parâmetros de ERRORLEVEL em um programa de lote, liste-os em ordem decrescente.