中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 中国奥运!ZWzw19750516 的作品(VISTA下会出错!)
作者:
标题: 中国奥运!ZWzw19750516 的作品(VISTA下会出错!) 上一主题 | 下一主题
yinjie1755
初级用户





积分 76
发帖 32
注册 2008-5-14
状态 离线
『楼 主』:  中国奥运!ZWzw19750516 的作品(VISTA下会出错!)

@echo off&color ec&mode con cols=50 lines=10
title 这是我们每一个中国人的心声!!!
echo.&echo.&echo.
echo     打倒一切阻挠奥运的反动势力,全力支持奥运!
echo.
for /l %%i in (1,1,100) do call,set cls=%%cls%%
goto one
:two
set n=2&set var=08-07&goto begin
:one
set n=1&set var=%date:~5,-4%
:begin
set month=%var:~1,1%&set number=29
set /a month-=1
for /l %%i in (1,1,%month%) do call :lp %%i
set /a number+=100%var:~3,2%%%100
set str=%str% %number%
if not %n% equ 2 goto two
for /f "tokens=1,2" %%i in ("%str%") do set /a day=%%j-%%i
set /a hm=100-1000%time:~9,2%%%1000,m=60-100%time:~6,2%%%100,f=60-100%time:~3,2%%%100,s=43-%time:~,2%
if %hm% equ 100 set /a hm-=100,m+=1
if %m% equ 60 set /a m-=60,f+=1
if %f% equ 60 set /a f-=60,h+=1
if %s% geq 24 set /a s-=24,day+=1
set /p=    离北京奥运开幕还有%day%天%s%小时%f%分%m%秒%hm%毫秒<nul
set /p=%cls%<nul
set n=0&set number=0
goto begin
:lp
for %%i in (1,3,5,7,8,10) do if %%i equ %1 set /a number+=31
for %%i in (4,6,9,11) do if %%i equ %1 set /a number+=30



===========================
@echo off&color 0a&mode con cols=50 lines=10
title 请输入您的OK代码
echo.
echo  请输入你的测试代码号
echo.
set/p a=

echo  Operator:%a%>operator.log
echo.
echo  代码号为:%a%,请按任意键退出!

pause>nul2>nul

[ Last edited by yinjie1755 on 2008-5-31 at 12:25 AM ]

   此帖被 +2 点积分    点击查看详情   
评分人:【 WANKOILZ 分数: +2  时间:2008-6-3 12:36


2008-5-31 00:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terrytong
中级用户





积分 240
发帖 115
注册 2008-3-10
状态 离线
『第 2 楼』:  这个P为什么会退出啊?

看里面的程序,不知道是怎么退出的,应该是个死循环啊。

2008-6-2 15:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 3 楼』:  



  Quote:
Originally posted by terrytong at 2008-6-2 15:36:
看里面的程序,不知道是怎么退出的,应该是个死循环啊。

这个批本来就没设置退出,要退出直接关闭窗口就是的啊,再说这个批不设置成重复的循环是运行不了的。
----------------------------------------------------------------------------------------------------------
源码已优化在7楼。

[ Last edited by zw19750516 on 2008-6-3 at 12:37 PM ]



批处理之家新域名:www.bathome.net
2008-6-2 17:51
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 4 楼』:  



  Quote:
Originally posted by yinjie1755 at 2008-5-31 00:24:
@echo off&color ec&mode con cols=50 lines=10
title 这是我们每一个中国人的心声!!!
echo.&echo.&echo.
echo     打倒一切阻挠奥运的反动势力,全力支 ...

我写这个批的环境是xpsp2,也没用过vista,应该是系统时间的设置上会有所不同,所以才会出错。



批处理之家新域名:www.bathome.net
2008-6-2 17:54
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
terrytong
中级用户





积分 240
发帖 115
注册 2008-3-10
状态 离线
『第 5 楼』:  它还是会自动退出啊?

运行了大概10秒钟就自动退出了,我想不通它是怎么退出的。
zw19750516兄,你能解释 一下吗?我想让它一直运行,除非是人为退出。谢谢!

2008-6-3 10:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by terrytong at 2008-6-3 10:59:
运行了大概10秒钟就自动退出了,我想不通它是怎么退出的。
zw19750516兄,你能解释 一下吗?我想让它一直运行,除非是人为退出。谢谢!

是还有问题,退出时的报错信息为“输入行太长”,我将会处理并完善的,请等待。



批处理之家新域名:www.bathome.net
2008-6-3 11:22
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 7 楼』:  已优化并做容错处理:


@echo off&color ac&mode con cols=50 lines=10&setlocal enabledelayedexpansion
title 这是我们每一个中国人的心声!!!
echo.&echo.&echo.
echo   打倒一切阻扰奥运的反动势力,全力支持北京奥运!
echo.
set "allday=31 29 31 30 31 30 31"
for /l %%i in (1,1,50) do call,set cls=%%cls%%
:begin
set /a month=%date:~6,1%,day=100%date:~8,2%%%100
for %%i in (%allday%) do (
    set /a n+=1
    if !n! geq %month% set /a days+=%%i
)
set /a days=days+8-day
set /a hm=100-1000%time:~9,2%%%1000,m=60-100%time:~6,2%%%100,f=60-100%time:~3,2%%%100,s=20-%time:~,2%
if %hm% lss 10 set hm=0%hm%
if %hm% equ 100 set /a hm-=100,m+=1
if %m% equ 60 set /a m-=60,f+=1
if %f% equ 60 set /a f-=60,h+=1
if %s% lss 0 set /a s+=24,days-=1
set /p=  离2008北京奥运开幕还有%days%天%s%小时%f%分%m%秒%hm%毫秒<nul
set /p=%cls%<nul
set n=0&set days=0&goto begin


[ Last edited by zw19750516 on 2008-6-4 at 12:02 AM ]

   此帖被 +1 点积分    点击查看详情   
评分人:【 WANKOILZ 分数: +1  时间:2008-6-3 14:36




批处理之家新域名:www.bathome.net
2008-6-3 12:16
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
terrytong
中级用户





积分 240
发帖 115
注册 2008-3-10
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by zw19750516 at 2008-6-3 12:16:
[code]
@echo off&color ac&mode con cols=50 lines=10&setlocal enabledelayedexpansion
title 这是我们每一个中国人的心声!!!
echo.&echo.&echo.
echo ...

非常感谢zw19750516兄。

2008-6-3 12:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terrytong
中级用户





积分 240
发帖 115
注册 2008-3-10
状态 离线
『第 9 楼』:  日期好像有问题啊

日期不对啊,跟本没有日期比较。

2008-6-3 14:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 10 楼』:  



  Quote:
Originally posted by terrytong at 2008-6-3 14:17:
日期不对啊,跟本没有日期比较。

要比较日期做什么啊,只要是天数和时间运算对了就可以了啊。



批处理之家新域名:www.bathome.net
2008-6-3 14:53
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 11 楼』:  

终于想到一方法让倒计时与系统时间同步。
:
@echo off&setlocal enabledelayedexpansion
for /l %%a in (1 1 10) do set cls=!cls!
call :loop 0 99 sh 100
call :loop 0 59 sm 60
call :loop 0 59 sf 60
call :loop 0 24 ss 24
:ok
title 当前时间 %time%
set /p=!ss%time:~0,2%!:!sf%time:~3,2%!:!sm%time:~6,2%!.!sh%time:~-2%!%cls%<nul
goto ok

:loop
set "m=%4"
for /l %%a in (%1 1 %2) do (
   set /a m-=1
   if !m! lss 10 (set ma=0!m!) else set "ma=!m!"
   if %%a lss 10 (set %30%%a=!ma!) else set "%3%%a=!ma!"
)
goto :eof




致精致简!
2008-6-3 16:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 12 楼』:  



  Quote:
Originally posted by 26933062 at 2008-6-3 16:18:
终于想到一方法让倒计时与系统时间同步。
:[code]
@echo off&setlocal enabledelayedexpansion
for /l %%a in (1 1 10) do set cls=!cls!
call :loop 0 99 sh 100
call :loop 0 5 ...

测试成功,厉害,学习了。



批处理之家新域名:www.bathome.net
2008-6-3 16:43
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 13 楼』:  



  Quote:
Originally posted by 26933062 at 2008-6-3 16:18:
终于想到一方法让倒计时与系统时间同步。
:[code]
@echo off&setlocal enabledelayedexpansion
for /l %%a in (1 1 10) do set cls=!cls!
call :loop 0 99 sh 100
call :loop 0 5 ...

楼兄 空格没处理吧



简单!简单!再简单!
2008-6-3 18:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 14 楼』:  



  Quote:
Originally posted by 26933062 at 2008-6-3 16:18:
终于想到一方法让倒计时与系统时间同步。
@echo off&setlocal enabledelayedexpansion
for /l %%a in (1 1 10) do set cls=!cls!
call :loop 0 99 sh 100
call :loop 0 5 ...

这样也可以 且空格也处理了
@echo off&setlocal enabledelayedexpansion
for /l %%a in (1 1 10) do set cls=!cls!
:lp
for /f "tokens=1-4 delims=:." %%i in ("%time: =%") do set/a t1=23-%%i,t2=59-(100%%j%%100),t3=59-(100%%k%%100),t4=100-(100%%l%%100)
if %t4% equ 100 set t4=0
for %%i in (t1 t2 t3 t4) do if !%%i! lss 10 set %%i=0!%%i!
title 当前时间 %time%
set/p=%t1%:%t2%:%t3%.%t4%%cls%<nul
goto lp




简单!简单!再简单!
2008-6-5 00:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: