Windows Batch: scelta predefinita con timeout


3

In una finestra di cmd, voglio chiedere all'utente un insieme di scelte (indicate da lettere), una delle quali è l'impostazione predefinita. L'utente può digitare una lettera o premere Enter, nel qual caso verrà selezionata la scelta predefinita.

Voglio anche specificare un timeout, quindi la scelta predefinita viene selezionata automaticamente dopo un determinato numero di secondi di inattività.

Il built-in choice il comando si avvicina:

> choice /C YN /T 5 /D Y /M "The message"

Ciò richiede solo scelte valide ( /C YN ) e auto-default su 'Y' ( /D Y ) dopo 5 secondi ( /T 5 )
... ma stranamente non permette di colpire Enter per la scelta predefinita.

L'altra opzione più prolissa che ho trovato consente di premere Invio per la scelta predefinita:

:ch
set sel=Y

REM Hitting Enter does not modify 'sel'
set /p sel=The message, [Y/N]?

if %sel% == Y goto Yes
if %sel% == N goto No

echo Invalid choice '%sel%', try again.
goto ch

... ma non so come fare questo selezionare automaticamente il valore predefinito dopo un po '.

Risposte:


1

Non penso ci sia un'opzione, a meno che non trovi qualche terza app CLI in grado di farlo.

Che ne dici di VBS? sarà molto più facile farlo ...


Non sono contrario a lanciare uno script VBS nel% PATH% e usarlo come un comando incorporato. Ma non conosco le vbs.
Cristi Diaconescu
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.