batch-file - 如何给 .bat 代码行一个时间限制?
问题描述
我想设置 30 秒的时间限制,:choice Y/N/P
并且在时间到了之后goto :start
我的代码需要时间方面的帮助
@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 "Select Option 1,2,3 or 4" /D 1
应用 5 秒的超时,错误级别设置为选项 1,在此实例中等于错误级别 1。
/N
隐藏默认的选择提示字符串。/M
允许您定义自己的提示字符串/C
允许将字母数字字符定义为选项选项
笔记:
- 关于列出的选项,错误级别从左到右设置。
- 选择命令后需要从最高到最低评估错误级别
- 或者
- 直接使用;例如在
Goto :LabelName%errorlevel%
命令中
*回复评论*
CHOICE /C 123 /T Timeout 25 /D goto :start /M 1 choice menu 25s
IF %ERRORLEVEL% EQU 1 goto :choice1
上面有多个错误。
/T Timeout 25
应该:/T 25
Timeout
隐含在/T
开关中,并且不构成正确使用选择命令的一部分。/D goto :start
应该是:/D 1
或/D 2
或/D 3
切换后只能使用定义的
/C
选项/D
/M 1 choice menu 25s
是不正确的。后面的提示
/M
应该用双引号括起来:"[1] Option 1. [2] Option 2. [3] Option 3."
错误级别评估应在 CHOICE 命令之后的行上进行。
同样,需要明确的是,评估应该从最高到最低进行。当错误级别在选择之后被评估时,它实际上被解释为
If ERRORLEVEL GTR n
,尽管被编写了脚本使用If 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
推荐阅读
- performance - 查询上下文是否在弹性搜索中的过滤上下文之前评估?如何确定评价顺序?
- docker - 石墨在数据点之间具有空值
- bitbucket - 如何使用 EXTRA_ARGS 变量排除多个文件夹?
- google-cloud-platform - 仅在 Big Query Job 完成后触发数据流的方法
- php - php会话购物车不处理大小
- powershell - 如何阅读多个计算机描述?
- java - 如何在 Quarkus 中为 Kafka 使用 TLS?
- html - SPFX webpart 引用 html 中的图像
- arrays - 哈希键无法转换为数组
- python - 更新字段