Board logo

标题: [特效代码] [已解决]批处理怎样实现倒计时+按任意键跳过? [打印本页]

作者: zhiyong_530    时间: 2011-6-20 15:37     标题: [已解决]批处理怎样实现倒计时+按任意键跳过?

本帖最后由 zhiyong_530 于 2011-6-23 16:49 编辑

求一个有倒计时,在倒计时结束后可以自动打开某个程序,在倒计时进行中按任意键可以跳这个步骤去执行另外某个程序的批处理。。。。谢谢谢谢谢谢谢谢谢谢
作者: CrLf    时间: 2011-6-20 16:25

start /b经典方案,不是我写的:
  1. @echo off
  2. echo %cmdcmdline%
  3. if "%~1"=="按任意键退出" goto :%1
  4. >"%temp%\.sub" cd.
  5. start "" /b %0 按任意键退出
  6. set 退格键=
  7. for /l %%a in (10 -1 1) do (
  8.      set /p =%退格键%%%a 秒后开始备份文件... [按任意键退出] <nul
  9.      if not exist "%temp%\.sub" exit
  10.      ping -n 2 127.1 >nul
  11. )
  12. echo,
  13. echo 备份完成。
  14. echo 按任意键退出...
  15. exit
  16. :按任意键退出
  17. pause >nul
  18. del "%temp%\.sub"
  19. exit
  20. pause
复制代码

作者: plp626    时间: 2011-6-20 19:58

这个在网上搜到的(不用注明出处了):

可定制任务,可定制输入按键。
  1. @echo off&if not "%1"=="" call%*&exit
  2. ::纯批实现等待指定输入
  3. :begin
  4. call:timeout 10 :tsk1 626 :tsk2
  5. :tsk1
  6. echo\&echo "默认计划"
  7. echo\&echo 按回车键退出
  8. exit
  9. :tsk2
  10. echo "自定义计划"
  11. pause
  12. exit
  13. :: /*----------------- timeout --------------------
  14. :timeout [:label1] [:LABEL2]
  15. setlocal&del/a/q %tmp%' 2>nul||(echo 未知错误!&pause&exit)
  16. start/b/REALTIME %~s0 :timeout_1 %1 %2 %3 %4
  17. :timeout_2
  18. set "v="
  19. set/p v=
  20. if %v%.==%3. title %ComSpec%&cd.>%tmp%'&endlocal&goto%4
  21. if exist %tmp%' exit ::没有输入,退出timeout
  22. goto:timeout_2
  23. :timeout_1 [:label1] [:LABEL2]
  24. for /l %%a in (%1 -1 0)do (
  25.   title 倒计时:%%a /输入:%3 跳过默认计划 %2/
  26.   if exist %tmp%' title %ComSpec%&exit
  27.   ping/n 2 127.1 >nul)
  28. title %ComSpec%&cd.>%tmp%'&goto%2
  29. :: --------------------- timeout -------------------*/
复制代码

作者: cjiabing    时间: 2011-6-20 21:41

以前自己编的:
  1. @echo off
  2. title 倒计时结束与按任意键中止&::by cjiabing&from http://hi.baidu.com/cjiabing
  3. echo;
  4. echo     导弹即将发射,开始15秒倒计时,取消请按任意键!
  5. call :DaoJiShi
  6. echo;
  7. echo;
  8. echo     你终止了倒计时。
  9. echo;    导弹没有发射出去,世界和平!
  10. echo;
  11. pause
  12. exit
  13. :DaoJiShi
  14. ::窗口显示倒计时,结束后自动退出。
  15. echo;
  16. set /p=    15 秒钟后自动退出,请按任意键继续. . .<nul
  17. if exist "%temp%\$0.tmp" del "%temp%\$0.tmp"
  18. start /b  "" cmd /c "(for /l %%a in (10,-1,0) do @if %%a lss 10 (for %%i in (0%%a) do @set /p= %%i <nul&title %%a&ping /n 2 127.0.1>nul&if exist "%temp%\$0.tmp" exit) else (@set /p= %%a <nul&title %%a&ping /n 2 127.0.1>nul&if exist "%temp%\$0.tmp" exit))&&(title KillDaoJiShi&for /f "skip=3 tokens=2" %%a in ('TASKLIST /FI "WINDOWTITLE  eq  KillDaoJiShi"   /FI "STATUS eq running"') do taskkill /f /t /pid %%a>nul 2>nul)"
  19. pause>nul
  20. cd.>"%temp%\$0.tmp"
  21. goto :eof
复制代码

作者: zhiyong_530    时间: 2011-6-21 12:02

2# zm900612


这个俺之前试过了,因为俺弄的那个在这一段后面还有内容,所以并不能退出,只能跳过某一小段,希望大大能再给点指点,怎样改。。。
作者: caruko    时间: 2011-6-21 15:30

其实用choice更好,节省资源,但是无法做到“任意键”,只能是字母跟数字。
作者: caruko    时间: 2011-6-21 15:49

  1. @echo off
  2. echo,start
  3. ping -n 2 127.1>nul
  4. rem 程序段
  5. rem 开始
  6. rem 倒计时时间
  7. set t=10
  8. :yanshi
  9. choice /c 0123456789ABCDEFGHIJKLMNOPQRSTWVUXYZ /n /M "按任意字母键退出,倒计时%t%秒" /t 1 /d %t:~-1%
  10. if %ERRORLEVEL% gtr 10 echo,中断&goto :jixu
  11. set /a t-=1
  12. if %t% gtr 0 goto :yanshi
  13. :jixu
  14. echo,继续
  15. rem 程序段
  16. rem
  17. rem end
复制代码

作者: cjiabing    时间: 2011-6-21 15:57

6# caruko
可遗憾的就是,现在XP上没见这鬼东西。这么重要的东西不懂微软怎么放弃了。
作者: zhiyong_530    时间: 2011-6-23 16:49

4# cjiabing


谢谢!成功解决了!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2