windows - 在批处理文件中实现定时输入。 (倒计时一分钟)

标签 windows batch-file cmd countdowntimer

我正在使用 Windows 8 编写批处理文件,但我陷入了在批处理文件中实现计时器的困境。我想询问用户的输入并给他们一分钟的时间来输入他们的输入。一旦时间达到一分钟,就会显示“时间已到”之类的消息。因此,时间将从 1 秒开始到 60 秒结束,或者从 60 秒开始到 0 秒结束。两者都可以正常工作。 此外,我希望计时器显示在屏幕上的某个位置,以便他们可以看到倒计时。另外,当计时器运行时,我希望用户能够键入一个单词并按 Enter 键。该程序不会让用户等待,但它会等到时间结束或用户输入一个单词后(以先到者为准)。在他们输入有效单词后,我想将该单词存储在某个变量中并执行类似的操作(转到 VALIDWORD OR echo 这是一个有效单词!) 我不知道这在批处理文件中是否可行,并且有更高级的语言可以使用,但我想使用批处理脚本来完成这个程序。谢谢。 以下是我的想法:

@echo off
:Start
color EC
set /a time =60

:loop
cls
if %time% EQU 0 goto Timesup
if %time% LEQ 60 goto CONTINUE

:CONTINUE
ping localhost -n 2 >nul
set /a time-=1
set /p cho=     Enter your word: 
echo Remaing Time: %time%
goto loop

:Timesup
echo The time is over!
exit

如有任何想法或支持,我们将不胜感激。再次感谢!

最佳答案

批处理文件不是为此类任务而设计的,但可以执行某些高级管理,尽管方式有限。下面的子程序使用choice命令获取输入键,因此不允许用Enter键结束输入,也不允许用BackSpace删除字符;它使用 01 键来执行此类任务。

@echo off
setlocal

call :ReadTimedInput 60 word=
echo Word read: "%word%"
goto :EOF


:ReadTimedInput seconds result=
setlocal EnableDelayedExpansion

set /A seconds=100+%1
set "letters=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
for /F %%a in ('copy /Z "%~F0" NUL') do set "CR=%%a"
for /F %%a in ('echo prompt $H ^| cmd') do set "BS=%%a"

echo Enter a word; press 0 to End, press 1 to Clear
:clear
set /P "=X!CR!                                     !CR!" < NUL
set "result="
:loop
   set /P "=X!BS! !CR!%seconds:~-2%: %result%" < NUL
   choice /C ¡10%letters% /N /CS /T 1 /D ¡ > NUL
   if %errorlevel% equ 1 goto tick
   if %errorlevel% equ 2 goto clear
   if %errorlevel% equ 3 echo/& goto endInput
   set /A char=%errorlevel%-4
   set "result=%result%!letters:~%char%,1!"
   :tick
   set /A seconds-=1
if %seconds% gtr 100 goto loop
echo !CR!00
set "result=Time out"
:endInput
endlocal & set "%2=%result%"
exit /B

关于windows - 在批处理文件中实现定时输入。 (倒计时一分钟),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30747280/

相关文章:

c++ 查找主操作系统目录

windows - Vim 在每次保存后插入 _viminfo 文件

scripting - 批处理文件显示启动项

file - 批处理文件是否可以创建文件,但前提是文件不存在?

java - 在计划模式下执行bat文件(java程序)后命令提示符未退出

node.js - 有没有办法防止Windows命令行中的env变量扩展百分比?

windows - 需要在 inno setup 安装程序中覆盖 DLL - 但文件未被替换

c# - 列出并连接到蓝牙设备

batch-file - 如何正确使用 IF 和 GOTO 语句

java - jdk-13.0.2因为logisim导调用脑不可见