标题: [游戏娱乐] 批处理版2012奥运倒计时 [打印本页]
作者: batman 时间: 2009-8-21 18:39 标题: 批处理版2012奥运倒计时
&&2008北京奥运的成功举办在全世界引起了巨大的震撼,而这对于我们华夏儿女来说,更
是一份值得恒久珍存的自信和豪迈。2008年8月8日那辉煌的一刻将永远载入史册并铭刻在
每一个中国人的心中。。。
2008北京奥运是第二十九届奥运盛会,下一届也就是第三十届奥运会将在英国伦敦举
行。那么我想问大家,你们是否知道伦敦奥运会具体的开幕时间呢?告诉大家吧,伦敦奥
运会将于2012年7月27日伦敦时间20点12分整正式开幕,换算成北京时间即为2012年7月
27日12点12分。那么大家又知道,当前时间离2012奥运开幕还有多久吗?请看下面的批
处理代码:- @echo off&setlocal enabledelayedexpansion
- title 2012奥运倒计时 made by batman
- mode con cols=60 lines=10&color 1c
- if defined ok goto end
- set "ok=a"&start /b %~nx0
- if "%date:~,4%%date:~5,2%%date:~8,2%%time:~,2%%time:~3,2%%time:~6,2%" gtr "20120727121200" (
- echo 倒计时时间已过。。。&ping /n 3 127.1>nul&goto :eof
- )
- for /l %%a in (1,1,60) do set "k=!k! "
- set /a num=31,_2012=7
- for %%a in (1 3 5 7 8 10 12 4 6 9 11) do (
- if %%a equ 4 set /a num-=1
- set /a _%%a=num
- )
- :again
- 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
- for /l %%a in (%y% 1 2012) do (
- if %%a equ 2012 (set /a _2=29) else set /a _2=28
- if %y% equ 2012 (
- if %mo% equ 7 (
- set /a num_d+=31-d
- ) else (
- for /l %%b in (%mo% 1 7) do set /a num_d+=_%mo%
- set /a num_d-=d
- )
- ) else (
- if %%a neq 2012 set /a num_d+=365
- for %%b in (%y% 2012) do (
- if %%b equ %%a (
- if %%b equ %y% (set "+=-"&set /a num_d+=_%mo%-d) else set "+=+"
- for /l %%c in (1,1,!_%%b!) do set /a num_d!+!=_%%c
- )
- )
- )
- )
- set /a num_h=35-h,num_m=71-m,num_s=59-s,num_ms=100-ms
- for %%a in (ms-100-s s-60-m m-60-h h-24-d) do (
- for /f "tokens=1-3 delims=-" %%a in ("%%a") do if !num_%%a! geq %%b set /a num_%%a-=%%b,num_%%c+=1
- )
- if %num_ms% lss 10 set "num_ms=0%num_ms%"
- set /p=%k% 离第三十届伦敦奥运会开幕还有%num_d%天%num_h%小时%num_m%分%num_s%秒%num_ms%毫秒<NUL
- for /l %%a in (1,1,600) do echo>nul
- goto again
- :end
- echo.&echo.&echo 同一个世界 同一种期盼&echo.&echo.
- pause>nul
- taskkill /fi "windowtitle eq 2012奥运倒计时 made by batman">nul
复制代码
----------------------------------------------------------------------------------------------------
研究net的数码雨后加入了任意键退出功能----------2009年8月22日 14:42分更新
作者: 基拉freedom 时间: 2009-8-21 22:09
支持下
让我慢慢看看代码
作者: 基拉freedom 时间: 2009-8-21 22:12
恩 建议把字体颜色换一下 红色闪得很不舒服
作者: netbenton 时间: 2009-8-21 23:21
把退格符串放到变量,这样就不会闪了:
set /p=!tg! 离第三十届伦敦奥运会开幕还有%num_d%天%num_h%小时%num_m% 分%num_s%秒%num_ms%毫秒<NUL
作者: batman 时间: 2009-8-21 23:49 标题: 回复 4楼 的帖子
多谢net的提醒,一时竟忘记这样处理了,呵呵。。。
顶楼已更新并修正了当年份为2012年的两处bug。
作者: defanive 时间: 2009-8-22 00:50
那个RL的函数库不是已经有个计算的函数么,用起来多方便,效率也高。。。
2012,好遥远啊。。。
作者: yslyxqysl 时间: 2009-8-22 09:04
似乎少了一天...同一个世界 同一种期盼
2012-07-26 星期四, 9:04:40.46,还有0天3小时7分19秒54毫秒
作者: chy1979126 时间: 2009-8-22 09:06 标题: 如果 觉得颜色不好 可以考虑0a
mode con cols=60 lines=10&color 0a
作者: batman 时间: 2009-8-22 09:40 标题: 回复 7楼 的帖子
确实是少了一天,原因当小时值高于24时天数没有加1,已修正,多谢。
[ 本帖最后由 batman 于 2009-8-22 13:15 编辑 ]
作者: 523066680 时间: 2009-8-22 21:23
当是小插曲吧。- @echo off
- setlocal enabledelayedexpansion
- mode con cols=25 lines=5
- title %date%
- set "cut="
- set "str=xxxxxxxx"
- :a
- set t=%time:~0,8%
- call :next
- ping -n 3 127.1>nul
- set "t= "
- call :next
- goto :a
-
- :next
- for /l %%a in (0,1,7) do (set num%%a=%%a)
- set /a aa=8
- :aa
- set /a rand=%random%%%aa,aa-=1
- set /a x=num%rand%,xb=x+1
- set str=!str:~0,%x%!!t:~%x%,1!!str:~%xb%!
- set num%rand%=!num%aa%!
- ping -n 1 127.1>nul
- cls
- echo, %str%
- if %aa% gtr 0 (goto :aa)
- goto :eof
复制代码
作者: neorobin 时间: 2009-12-8 23:40 标题: 小讨论
- if "%date:~,4%%date:~5,2%%date:~8,2%%time:~,2%%time:~3,2%%time:~6,2%" gtr "20120727121200"
复制代码
可以简作- if "%date:~,10%%time%" geq "2012-07-2712:12:00.00"
复制代码
date 和 time 两个变量的值唯一不规则的就是 时 的数字在小于10时 用了一个空格和一个数字符来表示,
其余, 月, 日, 分, 秒, 百分秒 都是用的两位数字符来表示, 但这个空格并不影响时间的比较
在 ASCII 标准中, 所有的非控制字符(当然包括数字符 1 和 2)的码值都是 大于 空格的码值(0x20)的.
当然有个弊端是 MS 把 年月日的分隔符短横线(-)和时分秒百分秒的分隔符冒号和点号(:.)给换了
[ 本帖最后由 neorobin 于 2009-12-8 23:42 编辑 ]
作者: batman 时间: 2009-12-9 08:37 标题: 回复 11楼 的帖子
之所以写成这样也是为了防止各人机器上的时间格式不一样,
如有的是2009-12-09,而有的可能是2009/12/09。
作者: neorobin 时间: 2009-12-9 11:40 标题: 回复 12楼 的帖子
同意, 试改了一下, 区域和语言设置确实也影响到了命令行的时间格式
作者: broly 时间: 2010-11-25 23:29
我提个建议。这句- set "ok=a"&start /b %~nx0
复制代码
最好改为- set "ok=a"&start /b "%~nx0"
复制代码
我刚才运行的时候,名字有空格,报错了。
瑕不掩瑜,瑕不掩瑜~
作者: qq415650 时间: 2010-12-13 11:25
太帅了 佩服 我就佩服技术能人
作者: zsl200911 时间: 2013-2-21 14:02
学习一下,谢谢
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |