标题: [特效代码] [已解决]批处理怎样实现倒计时+按任意键跳过? [打印本页]
作者: zhiyong_530 时间: 2011-6-20 15:37 标题: [已解决]批处理怎样实现倒计时+按任意键跳过?
本帖最后由 zhiyong_530 于 2011-6-23 16:49 编辑
求一个有倒计时,在倒计时结束后可以自动打开某个程序,在倒计时进行中按任意键可以跳这个步骤去执行另外某个程序的批处理。。。。谢谢谢谢谢谢谢谢谢谢
作者: CrLf 时间: 2011-6-20 16:25
start /b经典方案,不是我写的:- @echo off
- echo %cmdcmdline%
- if "%~1"=="按任意键退出" goto :%1
- >"%temp%\.sub" cd.
- start "" /b %0 按任意键退出
- set 退格键=
-
- for /l %%a in (10 -1 1) do (
- set /p =%退格键%%%a 秒后开始备份文件... [按任意键退出] <nul
- if not exist "%temp%\.sub" exit
- ping -n 2 127.1 >nul
- )
-
- echo,
- echo 备份完成。
-
- echo 按任意键退出...
- exit
-
- :按任意键退出
- pause >nul
- del "%temp%\.sub"
- exit
-
- pause
复制代码
作者: plp626 时间: 2011-6-20 19:58
这个在网上搜到的(不用注明出处了):
可定制任务,可定制输入按键。- @echo off&if not "%1"=="" call%*&exit
- ::纯批实现等待指定输入
- :begin
- call:timeout 10 :tsk1 626 :tsk2
- :tsk1
- echo\&echo "默认计划"
- echo\&echo 按回车键退出
- exit
-
- :tsk2
- echo "自定义计划"
- pause
- exit
- :: /*----------------- timeout --------------------
- :timeout [:label1] [:LABEL2]
- setlocal&del/a/q %tmp%' 2>nul||(echo 未知错误!&pause&exit)
- start/b/REALTIME %~s0 :timeout_1 %1 %2 %3 %4
- :timeout_2
- set "v="
- set/p v=
- if %v%.==%3. title %ComSpec%&cd.>%tmp%'&endlocal&goto%4
- if exist %tmp%' exit ::没有输入,退出timeout
- goto:timeout_2
- :timeout_1 [:label1] [:LABEL2]
- for /l %%a in (%1 -1 0)do (
- title 倒计时:%%a /输入:%3 跳过默认计划 %2/
- if exist %tmp%' title %ComSpec%&exit
- ping/n 2 127.1 >nul)
- title %ComSpec%&cd.>%tmp%'&goto%2
- :: --------------------- timeout -------------------*/
复制代码
作者: cjiabing 时间: 2011-6-20 21:41
以前自己编的:- @echo off
- title 倒计时结束与按任意键中止&::by cjiabing&from http://hi.baidu.com/cjiabing
- echo;
- echo 导弹即将发射,开始15秒倒计时,取消请按任意键!
- call :DaoJiShi
- echo;
- echo;
- echo 你终止了倒计时。
- echo; 导弹没有发射出去,世界和平!
- echo;
- pause
- exit
-
- :DaoJiShi
- ::窗口显示倒计时,结束后自动退出。
- echo;
- set /p= 15 秒钟后自动退出,请按任意键继续. . .<nul
- if exist "%temp%\$0.tmp" del "%temp%\$0.tmp"
- 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)"
- pause>nul
- cd.>"%temp%\$0.tmp"
- goto :eof
复制代码
作者: zhiyong_530 时间: 2011-6-21 12:02
2# zm900612
这个俺之前试过了,因为俺弄的那个在这一段后面还有内容,所以并不能退出,只能跳过某一小段,希望大大能再给点指点,怎样改。。。
作者: caruko 时间: 2011-6-21 15:30
其实用choice更好,节省资源,但是无法做到“任意键”,只能是字母跟数字。
作者: caruko 时间: 2011-6-21 15:49
- @echo off
- echo,start
- ping -n 2 127.1>nul
- rem 程序段
- rem 开始
- rem 倒计时时间
- set t=10
- :yanshi
- choice /c 0123456789ABCDEFGHIJKLMNOPQRSTWVUXYZ /n /M "按任意字母键退出,倒计时%t%秒" /t 1 /d %t:~-1%
- if %ERRORLEVEL% gtr 10 echo,中断&goto :jixu
- set /a t-=1
- if %t% gtr 0 goto :yanshi
- :jixu
- echo,继续
- rem 程序段
- rem
- 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 |