2017-05-08 4 views
0

im nouveau à la programmation par lots. Je me demandais s'il y avait un moyen d'écrire une invite temporisée sans utiliser choice.exe parce que j'utilise Windows XP. Quelque chose dans le style de:Batch Windows xp timed invite sans choice.exe

@echo off 
/set p answer=input y or n in 30 seconds 
rem start timer 
if answer==y(
    goto :action1 
) 
if answer==n(
    goto action2 
) 
rem if timer has expired without input go to :action1 

:action 1 
echo you have entered y 
:action 2 
echo you have entered n 

Merci pour les conseils.

Répondre

0

Voici une idée. Vous pouvez utiliser la méthode Popup() de Wscript.Shell. Il inclut un paramètre de délai d'expiration. Une boîte de dialogue Oui/Non renverra 6 sur Oui, 7 sur Non et -1 sur Délai. Ceci est assez facile à convertir en booléen comme true sur Oui/timeout, false sur Non. Enregistrez ceci avec une extension .bat et vous verrez comment cela fonctionne.

@if (@CodeSection == @Batch) @then 
@echo off & setlocal 

set delay=30 
set "msg=Do you wish to continue?" 

cscript /nologo /e:JScript "%~f0" "%msg%" %delay% && (
    goto yes 
) || (
    goto no 
) 

:yes 
echo You chose yes. 
exit /b 

:no 
echo You chose no. 
exit /b 

@end // end Batch/begin JScript hybrid code 

var osh = WSH.CreateObject('WScript.Shell'), 
    msg = WSH.Arguments(0), 
    secs = WSH.Arguments(1); 

var response = osh.Popup(msg, secs, 'Waiting for response', 4 + 32); 
// yes or timeout returns true; no returns false 
WSH.Quit(!(response - 7)); 
0

Vous pouvez essayer ceci:

EditVar and Choose

Choisissez est similaire à l'outil Microsoft choix, mais il a plus de fonctionnalités. Voici quelques raisons pour lesquelles il peut être préférable de choisir:

  • Il ne sonne pas lorsque l'utilisateur fait un choix invalide.

  • Il offre une fonction «clé par défaut», qui permet à un utilisateur d'appuyer sur Entrée pour sélectionner un choix par défaut.

  • Il est livré avec une version DOS en mode réel (utile pour les médias de démarrage MS-DOS). La fonctionnalité de délai d'attente de la version Win32 ne se confond pas lorsque vous exécutez plusieurs instances dans des fenêtres de console distinctes (cela était un problème avec les versions antérieures de console Win32 de l'outil Choix de Microsoft).

  • Une version 64 bits est fournie.

  • Il peut supprimer l'affichage du choix de l'utilisateur.

  • Il offre un mode «entrée ligne» où l'utilisateur doit appuyer sur Entrée après avoir fait un choix.

Voici un exemple:

CHOOOSE64.exe -c YNA -d A -n -p "Prompt" -t A,30 
rem   -Choices 
rem     -Default 
rem      -No default prompt 
rem       -Prompt(custom) 
rem          -timeout defaultChoice, timeout in seconds 

if %errorlevel%==1 echo Y 
if %errorlevel%==2 echo N 
if %errorlevel%==3 echo A or timeout-ed