[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理倒计时,按任意键终止,执行其他操作?

本人菜鸟,求助大师:
我改了一个批处理,主要是安装pe系统的,下面截取了一部分,这一部分不太理想,求大师们帮我看看,这里面的主要问题是用了cls清屏命令,把我这一段代码之前的提示信息都清掉了(我猜测是cls引起的),我的要求是不用cls命令的倒计时批处理,按任意键中止,去执行一个标签,倒计时结束,自动执行另外一个标签,怎么写?
  1. 其他代码,很长,略。。。。
  2. ::@Echo Off
  3. ::PUSHD %~dp0
  4. ::call :ChoiceLegacy
  5. call :CountDown
  6. :Nt6id
  7. goto :eof
  8. :ChoiceLegacy
  9. ::ping 127.0.0.1 -n 1 1>nul 2>nul
  10. :Select
  11. Echo.
  12. Echo 目标分区如果是Windows 8以上系统、非触摸屏电脑、且有物理键盘,可以使用键盘选择传统字符登录界面,〖请问〗:
  13. Echo.
  14. SET Choice=
  15. SET /P Choice=启用传统字符登录界面菜单吗?(y键启用传统字符登录界面,推荐其他键默认登录方式)
  16. ECHO.
  17. IF NOT "%Choice%"=="" SET Choice=%Choice:~0,1%
  18. IF /I "%Choice%"=="y" call :legacy
  19. goto :eof
  20. :legacy
  21. %Windir%\System32\bcdedit.exe /store %target%\Boot\BCD /set {default} bootmenupolicy legacy
  22. goto :eof
  23. :CountDown
  24. echo;___倒计时___>%temp%\sleep
  25. start /b "" %Windir%\System32\cmd.exe /c "pause>nul&del %temp%\sleep"
  26. SETLOCAL ENABLEDELAYEDEXPANSION
  27. for /L %%a in (20,-1,1) do (
  28. Echo.
  29. Echo 目标分区如果是Windows 8以上系统、非触摸屏电脑、且有物理键盘,可以使用键盘选择传统字符登录界面,推荐默认登录方式,〖请问〗:
  30. Echo.
  31. echo 启用传统字符登录界面菜单吗?按任意键取消倒计时选择登录方式
  32. Echo.
  33. echo 程序将在 〖%%a〗 秒钟后自动启用默认登录方式......
  34. %Windir%\System32\ping.exe -n 2 localhost 1>nul 2>nul
  35. cls
  36. ENDLOCAL
  37. if not exist %temp%\sleep goto ChoiceLegacy
  38. )
  39. goto :eof
复制代码

自问自答一下:
我在百度贴吧里,找了一篇,就没有用cls命令,可是我没看懂,不会改,提供给老师们参考一下。。。
  1. @echo off
  2. if "%~1"=="按任意键退出" goto :%1
  3. >"%temp%\.sub" cd.
  4. start "" /b %0 按任意键退出
  5. set 退格键=
  6. for /l %%a in (10 -1 1) do (
  7.      set /p =%退格键%%%a 秒后开始备份文件... [按任意键退出] <nul
  8.      if not exist "%temp%\.sub" exit
  9.      ping -n 2 127.1 >nul
  10. )
  11. echo,
  12. echo 备份完成。
  13. echo 按任意键退出...
  14. exit
  15. :按任意键退出
  16. pause >nul
  17. del "%temp%\.sub"
  18. exit
复制代码
贴吧的地址:
十分精彩的倒计时代码,转自批处理之家

TOP

choice可以
C:\Users\Admin>choice /?

CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]

描述:
    该工具允许用户从选择列表选择一个项目并返回所选项目的索引。

参数列表:
   /C    choices       指定要创建的选项列表。默认列表是 "YN"。

   /N                  在提示符中隐藏选项列表。提示前面的消息得到显示,
                       选项依旧处于启用状态。

   /CS                 允许选择分大小写的选项。在默认情况下,这个工具
                       是不分大小写的。

   /T    timeout       做出默认选择之前,暂停的秒数。可接受的值是从 0
                       到 9999。如果指定了 0,就不会有暂停,默认选项
                       会得到选择。

   /D    choice        在 nnnn 秒之后指定默认选项。字符必须在用 /C 选
                       项指定的一组选择中; 同时,必须用 /T 指定 nnnn。

   /M    text          指定提示之前要显示的消息。如果没有指定,工具只
                       显示提示。

   /?                  显示此帮助消息。

   注意:
   ERRORLEVEL 环境变量被设置为从选择集选择的键索引。列出的第一个选
   择返回 1,第二个选择返回 2,等等。如果用户按的键不是有效的选择,
   该工具会发出警告响声。如果该工具检测到错误状态,它会返回 255 的
   ERRORLEVEL 值。如果用户按 Ctrl+Break 或 Ctrl+C 键,该工具会返回 0
   的 ERRORLEVEL 值。在一个批程序中使用 ERRORLEVEL 参数时,将参数降
   序排列。

示例:
   CHOICE /?
   CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。"
   CHOICE /T 10 /C ync /CS /D y
   CHOICE /C ab /M "选项 1 请选择 a,选项 2 请选择 b。"
   CHOICE /C ab /N /M "选项 1 请选择 a,选项 2 请选择 b。"

TOP

本帖最后由 zhoubin 于 2013-12-21 13:06 编辑

郁闷,只有一人回复。。。
谢谢楼上的。。。
我去找找choice!!!

TOP

你二楼的代码就能用,你为什么还有找

TOP

返回列表