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

[游戏娱乐] 批处理版2012奥运倒计时

&&2008北京奥运的成功举办在全世界引起了巨大的震撼,而这对于我们华夏儿女来说,更
是一份值得恒久珍存的自信和豪迈。2008年8月8日那辉煌的一刻将永远载入史册并铭刻在
每一个中国人的心中。。。
  2008北京奥运是第二十九届奥运盛会,下一届也就是第三十届奥运会将在英国伦敦举
行。那么我想问大家,你们是否知道伦敦奥运会具体的开幕时间呢?告诉大家吧,伦敦奥
运会将于2012年7月27日伦敦时间20点12分整正式开幕,换算成北京时间即为2012年7月
27日12点12分。那么大家又知道,当前时间离2012奥运开幕还有多久吗?请看下面的批
处理代码:
  1. @echo off&setlocal enabledelayedexpansion
  2. title 2012奥运倒计时 made by batman
  3. mode con cols=60 lines=10&color 1c
  4. if defined ok goto end
  5. set "ok=a"&start /b %~nx0
  6. if "%date:~,4%%date:~5,2%%date:~8,2%%time:~,2%%time:~3,2%%time:~6,2%" gtr "20120727121200" (
  7.    echo 倒计时时间已过。。。&ping /n 3 127.1>nul&goto :eof
  8. )
  9. for /l %%a in (1,1,60) do set "k=!k! "
  10. set /a num=31,_2012=7
  11. for %%a in (1 3 5 7 8 10 12 4 6 9 11) do (
  12.      if %%a equ 4 set /a num-=1
  13.      set /a _%%a=num
  14. )
  15. :again
  16. set /a y=%date:~,4%,mo=1%date:~5,2%%%100,d=1%date:~8,2%%%100,h=%time:~,2%,m=1%time:~3,2%%%100,s=1%time:~6,2%%%100,ms=1%time:~9,2%%%100,_%y%=mo,num_d=-5
  17. for /l %%a in (%y% 1 2012) do (
  18.      if %%a equ 2012 (set /a _2=29) else set /a _2=28
  19.      if %y% equ 2012 (
  20.          if %mo% equ 7 (
  21.             set /a num_d+=31-d
  22.             ) else (
  23.             for /l %%b in (%mo% 1 7) do set /a num_d+=_%mo%
  24.             set /a num_d-=d
  25.          )
  26.         ) else (
  27.          if %%a neq 2012 set /a num_d+=365
  28.          for %%b in (%y% 2012) do (
  29.              if %%b equ %%a (
  30.                 if %%b equ %y% (set "+=-"&set /a num_d+=_%mo%-d) else set "+=+"
  31.                 for /l %%c in (1,1,!_%%b!) do set /a num_d!+!=_%%c
  32.              )
  33.          )
  34.      )
  35. )
  36. set /a num_h=35-h,num_m=71-m,num_s=59-s,num_ms=100-ms
  37. for %%a in (ms-100-s s-60-m m-60-h h-24-d) do (
  38.     for /f "tokens=1-3 delims=-" %%a in ("%%a") do if !num_%%a! geq %%b set /a num_%%a-=%%b,num_%%c+=1
  39. )
  40. if %num_ms% lss 10 set "num_ms=0%num_ms%"
  41. set /p=%k%   离第三十届伦敦奥运会开幕还有%num_d%天%num_h%小时%num_m%分%num_s%秒%num_ms%毫秒<NUL
  42. for /l %%a in (1,1,600) do echo>nul
  43. goto again
  44. :end
  45. echo.&echo.&echo                 同一个世界   同一种期盼&echo.&echo.
  46. pause>nul
  47. taskkill /fi "windowtitle eq 2012奥运倒计时 made by batman">nul
复制代码
----------------------------------------------------------------------------------------------------
研究net的数码雨后加入了任意键退出功能----------2009年8月22日 14:42分更新
1

评分人数

    • 基拉freedom: 判断月份天数的方法要学习一下 很简洁 以前 ...PB + 5
***共同提高***

回复 4楼 的帖子

多谢net的提醒,一时竟忘记这样处理了,呵呵。。。
顶楼已更新并修正了当年份为2012年的两处bug。
***共同提高***

TOP

回复 7楼 的帖子

确实是少了一天,原因当小时值高于24时天数没有加1,已修正,多谢。

[ 本帖最后由 batman 于 2009-8-22 13:15 编辑 ]
***共同提高***

TOP

回复 11楼 的帖子

之所以写成这样也是为了防止各人机器上的时间格式不一样,

如有的是2009-12-09,而有的可能是2009/12/09。
***共同提高***

TOP

返回列表