我正在制作一个.bat游戏,当前在输入命令时代码是
set /p command=
Run Code Online (Sandbox Code Playgroud)
我想知道的是,如果你能以某种方式有输入命令的时间限制.例如,如果你打了一个守卫,并且你没有在5秒内发出命令,那么守卫就会攻击.
这不是一件迫切需要的事情,我只是想知道更多关于我所受到的限制,而且我认为无论如何我都知道aawer(答案是你不能)
谢谢
也可以仅通过批处理来完成。
您可以使用 创建第二个线程(在同一窗口中)start /b。
如果该线程等待set /p用户输入,则主线程不受影响。
此示例将等待 5 秒用户输入,如果用户输入文本,则会将其移动到文件中,以便第一个线程可以访问它。
@echo off
setlocal EnableDelayedExpansion
if "%1" NEQ "" goto %1
del enter.tmp 2>nul >nul
start /b cmd /c %0 :secondThread
:FirstThread
set n=0
echo Enter Text (5 seconds timeout):
:loop
set /a n+=1
ping -n 2 localhost > nul
if !n! LSS 5 (
if not exist entER.tmp goto :loop
< Enter.tmp (
set /p input=
)
echo !input!
) ELSE (
echo Timeout for input
)
exit /b
:secondThread
set /p var=
> enter.tmp echo !var!
exit /b
Run Code Online (Sandbox Code Playgroud)