Batch file 为批量设置/p添加超时

Batch file 为批量设置/p添加超时,batch-file,timeout,Batch File,Timeout,我正在尝试向Set/p Var1=添加一个超时,到目前为止,我只从中找到了这段代码 @echo关闭 setlocal EnableDelayedExpansion 如果“%1”NEQ“转到%1 del enter.tmp 2>nul>nul 开始/b命令/c%0:第二个线程 :第一个线程 设置n=0 回显输入文本(5秒超时): :循环 设置/a n+=1 ping-n2 localhost>nul 如果!NLSS 5( 如果不存在,则输入.tmp转到:循环 enter.tmp echo!瓦尔!

我正在尝试向
Set/p Var1=
添加一个超时,到目前为止,我只从中找到了这段代码

@echo关闭
setlocal EnableDelayedExpansion
如果“%1”NEQ“转到%1
del enter.tmp 2>nul>nul
开始/b命令/c%0:第二个线程
:第一个线程
设置n=0
回显输入文本(5秒超时):
:循环
设置/a n+=1
ping-n2 localhost>nul
如果!NLSS 5(
如果不存在,则输入.tmp转到:循环
enter.tmp echo!瓦尔!
退出/b

这段代码工作得很好,只是它只在输入时停止倒计时。我希望在按下任何键时停止倒计时。我不知道这是否可能。谢谢

欢迎光临。你们这批货的目的是什么?Choice有一个超时,但只有errorlevel作为响应,也许你可以将其与set/p结合起来。我正试图通过清除屏幕并将文本放回,使我的批处理文件每秒更新一次,但我仍然希望仍有输入文本的选项。我现在唯一能输入的代码是在重置之间输入,这很难。我的问题的可能重复与这篇文章非常相似,但我希望有一个文本输入,不使用是或否的答案。我还希望在按键时停止倒计时,而不是在输入时停止倒计时。
@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