本帖最后由 cjiabing 于 2013-7-10 11:44 编辑
尝试新方法!~
| @echo off | | title 倒计时与中止 | | start /b "" cmd /c "set /p=按任意键结束 . . . <nul&pause>nul&title #Pause&exit/b" | | for /l %%i in (9,-1,1) do (for /f %%a in ('tasklist /fi "WINDOWTITLE eq #Pause" /nh') do if not "%%a"=="" goto OVER)>nul 2>nul&set /p=%%i<nul&ping /n 2 127.0.1>nul | | echo 倒计时结束! | | exit | | | | :OVER | | echo 倒计时结束! | | pause | | exitCOPY |
倒计时等待输入与自动选择任务
| @echo off | | set #title=倒计时与选择 | | | | set #time=5 | | | | if "%~1"=="1" goto 默认任务 | | | | :loop | | title %#title% | | start /b "" cmd /c "@echo off&(set /p=[倒计时:<nul&for /l %%i in (%#time%,-1,0) do (for /f %%a in ('tasklist /fi "WINDOWTITLE eq #Pause" /nh') do exit/b)>nul 2>nul&set /p=%%i]<nul&ping /n 2 127.0.1>nul)&start "" %0 1&taskkill /fi "WINDOWTITLE eq %#title%"" | | :选择 【此处为你的选择代码】 | | cls | | echo 开始下注,请在 5秒 内选择下注金额 . . . | | echo. | | echo 1.下注100万! | | echo 2.下注500万! | | echo 3.下注1000万! | | echo. | | set /p input=请选择: | | if "%input%"=="" goto loop | | title #Pause | | | | if %input%==1 echo 您已经下注 100 万!&pause | | if %input%==2 echo 您已经下注 500 万!&pause | | if %input%==3 echo 您已经下注 1000 万!&pause | | goto loop | | :默认任务 | | echo 您已经下注 1000 万! | | pause&goto loopCOPY |
后面是旧版:
| @echo off | | ::by cjiabing&from http://www.bathome.net | | echo; | | echo 开始倒计时,10 秒后自动关闭进程,取消倒计时请按任意键! | | echo; | | call :DaoJiShi 10 | | echo; | | echo; 演示结束,你中止了倒计时! | | echo; | | pause | | exit | | | | | | | | :DaoJiShi 引用方法:call :DaoJiShi 10 | | set /p= 请按任意键继续. . .<nul&if exist "%temp%\$0.tmp" del "%temp%\$0.tmp" | | start /b "" cmd /c "(for /l %%a in (%1,-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"&echo; | | goto :eofCOPY |
见有些人玩倒计时提示任务,俺也来一个,复杂了点。
以下设计了三种类型,可以用来执行不同的任务。
第一个可以在窗口内显示倒计时,其它两个在标题上显示。
将15该成你要的时间。 | @echo off | | ::by cjiabing | | ::from http://hi.baidu.com/cjiabing | | ::采用start /b打开双进程,子进程执行倒计时,父进程执行任意键,并以"%temp%\$0.tmp"作为控制点; | | ::当倒计时自然结束时,该控制点由子进程发出,父进程接收并执行相应命令,如:Taskkill。 | | ::当倒计时被任意键中断时,该控制点是由父进程发出,子进程接收并停止倒计时,父进程继续执行相应命令; | | ::使用 for /l 和 ping控制时间,第一个时间限于100以内,否则需要修改后面的退格键和空格个数。但标题可以正确显示。 | | echo; | | echo 导弹即将发射,开始15秒倒计时,取消请按任意键! | | call :DaoJiShi | | echo; | | echo; | | echo 你终止了倒计时。 | | echo; 导弹没有发射出去,世界和平! | | echo; | | echo ——第一种,下面是第二种 | | pause | | cls | | call :DaoJiShi1 | | echo; | | echo ——第二种,下面是第三种 | | echo; | | pause | | cls | | call :DaoJiShi2 | | echo; | | echo ——第三种,下面是执行任务 | | exit | | echo; | | :newplan | | 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 (15,-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 | | :DaoJiShi1 | | ::使用标题显示倒计时 | | echo; | | set /p= 15 秒钟后自动退出,请按任意键继续. . .<nul | | if exist "%temp%\$0.tmp" del "%temp%\$0.tmp" | | start /b "" cmd /c "(for /l %%a in (15,-1,0) do @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 | | | | :DaoJiShi2 | | ::使用标题显示倒计时。倒计时结束后不退出,而是执行其它任务 | | echo; | | set /p= 15 秒钟后执行任务,请按任意键继续. . .<nul | | if exist "%temp%\$0.tmp" del "%temp%\$0.tmp" | | if exist "%temp%\$1.tmp" del "%temp%\$1.tmp" | | start /b "" cmd /c "(for /l %%a in (15,-1,0) do @title %%a&ping /n 2 127.0.1>nul&if exist "%temp%\$0.tmp" exit)&&(cd.>"%temp%\$1.tmp")" | | start /b "" cmd /c "pause>nul&cd.>"%temp%\$0.tmp"" | | goto lp | | goto :eof | | exit | | :lp | | ping /n 2 127.0.1>nul | | if exist "%temp%\$1.tmp" goto newplan | | if exist "%temp%\$0.tmp" goto :eof | | goto lpCOPY |
|