Batch file 如何给.bat代码行一个时间限制?

Batch file 如何给.bat代码行一个时间限制?,batch-file,cmd,minecraft,minecraft-forge,pc,Batch File,Cmd,Minecraft,Minecraft Forge,Pc,我需要为设置30秒的时间限制:选择Y/N/p,时间到后转到:开始 我的代码在计时方面需要帮助 @echo off :start echo AmishCraft will start TIMEOUT /T 5 echo (%time%) java -Xms2048M -Xmx4096M -jar server.jar call C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe ping 1.1.1.1 -n 1

我需要为
设置30秒的时间限制:选择Y/N/p
,时间到后转到:开始

我的代码在计时方面需要帮助

@echo off
:start
echo AmishCraft will start
TIMEOUT /T 5
echo (%time%)
java -Xms2048M -Xmx4096M -jar server.jar

call C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe

ping 1.1.1.1 -n 1 -w 3000 >nul 

:choice 
set /P a=do you want to restart? Yes No Pause [Y/N/P]?
if /I "%a%" EQU "Y" goto :restart
if /I "%a%" EQU "N" goto :stop
if /I "%a%" EQU "P" goto :pause
goto :start

:restart
cls
echo server will restart

cls
goto :start

:stop

cls
echo closing server
TIMEOUT /T 5
exit

cls
echo server is paused 
:pause
:choice 
set /P a=do you want start? Restart Stop [R/S]?
if /I "%a%" EQU "R" goto :restart
if /I "%a%" EQU "S" goto :stop
goto :start

pause
  • /T
    是供选择的超时开关
  • /D
    是定义默认错误级别/选项的开关,用于设置 时间流逝
例如:

CHOICE/T 5/N/C 1234/M“选择选项1、2、3或4”/D 1

应用5秒的超时,errorlevel设置为选项1,在本例中等于errorlevel 1

  • /N
    隐藏默认的选项提示字符串
  • /M
    允许您定义自己的提示字符串
  • /C
    允许将字母数字字符定义为选项
注:

  • Errorlevel是根据列出的选项从左到右设置的
  • 选择命令后,需要从最高到最低评估错误级别
  • 直接使用;例如在
    Goto:LabelName%errorlevel%
    命令中
*回复评论*

CHOICE /C 123 /T Timeout 25 /D goto :start /M 1 choice menu 25s
IF %ERRORLEVEL% EQU 1 goto :choice1
上述内容中存在多个错误

  • /T超时25
    应为:
    /T 25
  • Timeout
    隐含在
    /T
    开关中,不构成正确使用choice命令的一部分

  • /D goto:start
    应该是:
    /d1
    /d2
    /d3

  • 只有定义的
    /C
    选项才能在
    /D
    开关后使用

  • /M 1选择菜单25s
    不正确

  • /M
    后面的提示应该用双引号括起来:
    “[1]选项1.[2]选项2.[3]选项3.

  • 错误级别评估应在CHOICE命令后的行上进行

  • 同样,为了清楚起见,评估应该从最高到最低进行。当按照以下选择评估errorlevel时,如果errorlevel GTR n
,它实际上被解释为
,尽管使用
如果errorlevel n

正确使用上述各项的示例:

@echo off
:menu
cls
CHOICE /N /T 25 /C 123 /M "[1] Option 1. [2] Option 2. [3] Start." /D 3
    IF ERRORLEVEL 3 (
        GOTO :start
    ) else (
        GOTO :choice%errorlevel%
    )

:start
ECHO( You are at the start
Pause
GOTO :menu

:choice1
ECHO( You are at option 1
Pause
GOTO :menu

:choice2
ECHO( You are at option 2
Pause
GOTO :menu

好的,作为
set/P
的替代方案,请看一下,它具有超时选项(
/T
)…我无法让它工作选项/C 123/T超时25/D转到:开始/M 1选项菜单25s如果%ERRORLEVEL%EQU 1转到:选择1这就是我得到的错误:无效的参数/选项-“25”。键入“CHOICE/?”了解用法。请使用失败的尝试更新您的问题,并使用引号
code
正确格式化代码,使其实际可读。您尝试使用Choice命令的方式存在明显错误。如果ERRORLEVEL==3,我将在回答中重新考虑
(有效,但语法错误)删除==以符合此处建议的用法:
https://www.robvanderwoude.com/errorlevel.php