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

【练习-029】批处理利用choice进行程序倒计时启动

出题目的:
  了解并利用第三方工具choice.exe
加分原则:
  1、完善代码加分10分
  2、其中思路独特基分5分
  3、代码简洁基分3分
  4、不用其它命令进行延时基分2分
题目如下:
  利用choice.exe在程序启动前进行10秒倒计时,中间可按任意字母退出,10秒后自动启动程序,至于要启动什么样的程序只需表示出来即可,你甚至于用一个echo命令表示就可以了。
choice.exe下载:http://bbs.bathome.net/thread-1726-1-1.html

[ 本帖最后由 Batcher 于 2009-5-1 21:10 编辑 ]
***共同提高***

  1. @choice/c abcdefghijklmnopqrstuvwxyz1 /t 10 /d 1 >nul||if errorlevel 27 cmd
复制代码

TOP

rat兄就是不一样,一句命令够简洁,但兄似乎漏掉了倒计时。。。
***共同提高***

TOP

达到了部分要求

  1. @echo off
  2. color b0
  3. @mode con cols=26 lines=13
  4. choice    /t 10  /d Y  
  5. echo  we love batman very much
  6. ::代码实现了10秒自动echo  we love batman very much
  7. ::的功能,但是,其他按任意键退出的功能,没有实现
  8. ::希望楼下能写出,满意的作品,我太菜了。
  9. echo.&echo.&echo.&echo.
复制代码
达到了部分要求,就少加点分,鼓励一下哈


[ 本帖最后由 lixiaodaoaaa 于 2008-10-22 16:06 编辑 ]
1

评分人数

    • more: 鼓励一下PB + 10

TOP

原帖由 rat 于 2008-10-22 14:52 发表
@choice/c abcdefghijklmnopqrstuvwxyz1 /t 10 /d 1 >nul||if errorlevel 27 cmd


按任意键,退出,你的功能实现了,但是按 space键,不退出,哈哈
那就不算按任意键了。。。。就有问题了 ^_^ ,按数字键 1——9 也不行,也不退出,电脑反而叫一声,哈哈
所以代码需要继续完善。。。莫非代码非得变成
  1. @choice /c abcdefghijklmnopqrstuvwxyz1234567890 /t 10 /d 2>nul ||if errorlever 33 cmd
复制代码


[ 本帖最后由 lixiaodaoaaa 于 2008-10-22 16:12 编辑 ]

TOP

原帖由 lixiaodaoaaa 于 2008-10-22 16:05 发表


按任意键,退出,你的功能实现了,但是按 space键,不退出,哈哈
那就不算按任意键了。。。。就有问题了 ^_^
所以代码需要继续完善。。。

任意键是做不到的,所以本题也只要求任意字母退出,同时本人来抛下砖吧:
  1. @echo off
  2. set "n=10"
  3. :begin
  4. cls&echo 请输入任意字母退出,否则10秒后程序将启动,计时:%n%秒
  5. choice /c 1abcdefghijklmnopqrstuvwxyz /d 1 /t 1 /n
  6. if %errorlevel% neq 1 goto :eof
  7. set /a n-=1
  8. if %n% neq 0 (goto begin) else (goto next)
  9. :next
  10. cls&echo 程序已启动&pause>nul
复制代码
***共同提高***

TOP

  1. @echo off
  2. set "times=10"
  3. echo 按任意键退出运行程序,默认 10 秒启动程序
  4. :bgn
  5. set/p=还剩下 %times% 秒...<nul
  6. if "%times%"=="0" goto :run
  7. set /a "times-=1"
  8. choice /T 1 /C abcdefghijklmnopqrstuvwxyz /d a >nul
  9. if "%errorlevel%"=="1" (goto :bgn) else (goto :end)
  10. :run
  11. echo.&echo 程序已经启动...
  12. pause>nul&goto :eof
  13. :end
  14. echo.&echo 已经退出程序...
  15. pause>nul
复制代码


谢谢版主提醒,现更改如下:
  1. @echo off
  2. set "times=10"
  3. echo 按任意字母键退出运行程序,默认 10 秒启动程序
  4. :bgn
  5. set/p=还剩下 %times% 秒...<nul
  6. if "%times%"=="0" goto :run
  7. set /a "times-=1"
  8. choice /T 1 /C 0abcdefghijklmnopqrstuvwxyz /d 0 >nul
  9. if "%errorlevel%"=="1" (goto :bgn) else (goto :end)
  10. :run
  11. echo.&echo 程序已经启动...
  12. pause>nul&goto :eof
  13. :end
  14. echo.&echo 已经退出程序...
  15. pause>nul
复制代码

[ 本帖最后由 more 于 2008-10-22 17:03 编辑 ]
1

评分人数

TOP

楼上的代码会忽略字母"a"。。。
***共同提高***

TOP

  1. @for /l %%a in (10,-1,0)do @cls&echo %%a&choice/c abcdefghijklmnopqrstuvwxyz1 /t 1 /d 1 >nul||if errorlevel 27 (if %%a==0 calc)else exit/b
复制代码

[ 本帖最后由 rat 于 2008-10-22 17:10 编辑 ]
3

评分人数

TOP

修改下本人6楼的代码:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in (10,-1,0) do (
  3.     cls&echo 请输入任意字母退出,否则10秒后程序将启动,计时:%%i秒
  4.   choice /c 1abcdefghijklmnopqrstuvwxyz /d 1 /t 1 /n
  5.     if !errorlevel! neq 1 goto :eof
  6. )
  7. cls&echo 程序已启动&pause>nul
复制代码
***共同提高***

TOP

  1. @echo off
  2. set n=4
  3. :LOOP
  4. set /p =%n%<nul & set /a n-=1
  5. Choice /c abcdefghijklmnopqrstuvwxyz1 /d 1 /t 1 /n>nul
  6. if not errorlevel 27 exit /b
  7. if %n% neq 0 goto :LOOP
  8. echo. &echo 程序已经启动
  9. pause
复制代码

[ 本帖最后由 pusofalse 于 2008-10-22 19:57 编辑 ]
心绪平和,眼藏静谧。

TOP

pusofalse版主最后一句是不是丢掉了pause,你这样的效果是倒计时后也是退出。。。
***共同提高***

TOP

感觉此题已经脱离了 choice 的实际用途,在这里只是起到延时作用。
类似与 for /l %%a in (1 1100) do ver>nul
技术问题请到论坛发帖求助!

TOP

原帖由 随风 于 2008-10-22 19:52 发表
感觉此题已经脱离了 choice 的实际用途,在这里只是起到延时作用。
类似与 for /l %%a in (1 1100) do ver>nul

随风兄此言差已,不用choice能实现输入字符就退出吗?我想纯批不回车是做不到的。。。再说,本题的目的也是
在于让更多的人了解choice这个三方工具啊。
***共同提高***

TOP

回复 12楼 的帖子

因为我是在CMD中运行的此批处理,已经修改好了,多谢提醒!。
心绪平和,眼藏静谧。

TOP

返回列表