本帖最后由 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
- rem 正常结束不必使用暂停命令。
- :OVER
- echo 倒计时结束!
- pause
- exit
复制代码
倒计时等待输入与自动选择任务
- @echo off
- set #title=倒计时与选择
- Rem 设置程序标题,重要。
- set #time=5
- Rem 设置倒计时时间“秒”
- if "%~1"=="1" goto 默认任务
- Rem 设置默认任务
- :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
- Rem 设置结束倒计时开关
- if %input%==1 echo 您已经下注 100 万!&pause
- if %input%==2 echo 您已经下注 500 万!&pause
- if %input%==3 echo 您已经下注 1000 万!&pause
- goto loop
- :默认任务
- echo 您已经下注 1000 万!
- pause&goto loop
复制代码
后面是旧版:
- @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 :eof
复制代码
见有些人玩倒计时提示任务,俺也来一个,复杂了点。
以下设计了三种类型,可以用来执行不同的任务。
第一个可以在窗口内显示倒计时,其它两个在标题上显示。
将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 lp
复制代码
|