windows批处理脚本:捕获用户对"超时"命令的反应

wik*_*iki 6 timeout batch-file

我知道通过使用"timeout"命令,我可以等待指定的时间; 但我的问题是,如果这是一个可以被用户阻止的自动操作怎么办?我的意思是假设我想要执行操作A但是通过使用"timeout"命令我等待用户是否要取消此操作; 例如,在此等待过程中,如果用户按下Enter键,则批处理脚本执行其他操作(不是操作A);在此输入图像描述

Mat*_*t M 6

timeout只是在动作之前引起延迟,而不是让用户选择某些东西。如果你还想使用它,你需要在超时命令之前让用户按 Control-C 中断,并在此之后捕获 ERRORLEVEL。

否则choice是你的朋友:

C:\Users\mm>CHOICE /T 10 /C yYcC /CS /D y  /M "Press y to validate, c to Cancel. You have 10 sec delay [Default y]:"
Press y to validate, c to Cancel. You have 10 sec delay [Default y]: [y,Y,c,C]?y
Run Code Online (Sandbox Code Playgroud)

您可以使用 ERRORLEVEL 测试返回值。在这里,我什么也没按,所以 y 被选中(通过 /D 的默认值)并且 ERRORLEVEL 为 1(第一个选项)。不过倒计时不显示。

ss64.com 上的 choice.exe 参考