不,鲍勃。 '你是谁,没有得到关于变量time
的观点。它是由系统设置的保留变量,但可以由用户脚本覆盖。几乎任何其他变量名称,你可以使用 - 只是不time
,date
, path
, random
和一些其他。
至于你的问题,
set "mytime=1 am"
call :starttimer
:game
... whatever
:getinput
set "response="
set /p "response=%~1"
if not exist timerfinished.txt goto :eof
:: here change "mytime"
set "mytime=2 am"
:starttimer
start /min "" timer.bat 10
goto :eof
其中timer.bat
是
@echo off
del timerfinished.txt 2>nul
timeout %1 /nobreak>nul
echo.>timerfinished.txt
exit
的timer.bat
文件只是删除标记文件timerfinished.txt
,通过它接收到的第一个参数设定的时间延迟(%1
- 在主代码中设置为10)然后创建文件并退出。
的主要代码最初使用:starttimer
那么每当你想要的提示和等待换一个响应启动定时器,你执行
call :getinput "Prompt for input "
和响应将出现在%response%
。
注意,在这个常规设置response
到什么最初确保响应是空的,如果用户只需按下输入
OK - 所以没有什么实际发生直到你输入的响应使用此方案只有这样,时间才会增加,并且游戏继续更新时间。如果您希望超时结束实际上做了某些事情 - 实际上这不会发生 - 除非您使用choice
通过超时选项输入您的响应。
如果您不延迟脚本,超时的意义何在? – SomethingDark
不要弄乱系统变量'%time%'。 '1 am'肯定不是一个有效的值。 – Stephan
这是一个有效的值。我试过了,只是时间没有起作用。 –