[批处理]在for7下运行时,在windows7中选择闪烁一小段时间

时间:2015-10-21 11:14:28

标签: batch-file

我尝试使用用户输入运行基本批量倒计时以跳过它(如运行动画的加载页面,用户可以根据需要跳过它)

我在这里做了我的研究..我正在使用ping命令,但这并没有给我任何选项来获取用户选择..而不是我选择并发现这篇帮助文章

How to ask for batch file user input with a timeout

我遇到的问题是提供的答案只是简单地在屏幕上闪现选择的文字一段时间..任何方法可以克服这个问题?

编辑:这是我使用的代码..一个b和c是示例,但pc将重新启动文本闪烁

@echo off
setlocal enableDelayedExpansion
for /l %%N in (1800 -1 1) do (
  set /a "min=%%N/60, sec=%%N%%60, n-=1"
  if !sec! lss 10 set sec=0!sec!
  choice /c:CN1 /n /m "PC will restart in !min!:!sec! - Press N to restart Now, or C to Cancel. " /t:0 /d:1
  cls
echo a
echo b
echo c
  choice /c:CN1 /n /m "PC will restart in !min!:!sec! - Press N to restart Now, or C to Cancel. " /t:1 /d:1
  if not errorlevel 3 goto :break
)
cls
echo PC will restart in 0:00 - Press N to restart Now, or C to Cancel.
:break
if errorlevel 2 (echo restarted) else echo Restart Canceled
pause>nul

1 个答案:

答案 0 :(得分:0)

正如Squashman所说:“你不能打破FOR / L命令!”所以解决方案不是“找到一种用输入来打破for循环的方法”,而是为了避免FOR / L循环:

@echo off
setlocal

set N=1800
:loop
  set /A "min=N/60, sec=N%%60, N-=1"
  if %sec% lss 10 set sec=0%sec%
  cls
echo a
echo b
echo c
  choice /c:CN1 /n /m "PC will restart in %min%:%sec% - Press N to restart Now, or C to Cancel. " /t:1 /d:1
if errorlevel 3 if %N% gtr 0 goto loop
cls
if errorlevel 2 (echo restarted) else echo Restart Canceled
pause>nul