中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-22 10:17
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 中国奥运!ZWzw19750516 的作品(VISTA下会出错!) 查看 953 回复 13
楼 主 中国奥运!ZWzw19750516 的作品(VISTA下会出错!) 发表于 2008-05-31 00:24 ·  中国 广东 深圳 电信
初级用户
积分 76
发帖 32
注册 2008-05-14 15:14
18年会员
UID 118657
性别 男
状态 离线
@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 ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
WANKOILZ +2 2008-06-03 12:36
2 这个P为什么会退出啊? 发表于 2008-06-02 15:36 ·  中国 上海 上海地面通信息网络有限公司
中级用户
★★
积分 240
发帖 115
注册 2008-03-10 19:31
18年会员
UID 112561
性别 男
状态 离线
看里面的程序,不知道是怎么退出的,应该是个死循环啊。
3 发表于 2008-06-02 17:51 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
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
4 发表于 2008-06-02 17:54 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
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
5 它还是会自动退出啊? 发表于 2008-06-03 10:59 ·  中国 上海 上海地面通信息网络有限公司
中级用户
★★
积分 240
发帖 115
注册 2008-03-10 19:31
18年会员
UID 112561
性别 男
状态 离线
运行了大概10秒钟就自动退出了,我想不通它是怎么退出的。
zw19750516兄,你能解释 一下吗?我想让它一直运行,除非是人为退出。谢谢!
6 发表于 2008-06-03 11:22 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
Originally posted by terrytong at 2008-6-3 10:59:
运行了大概10秒钟就自动退出了,我想不通它是怎么退出的。
zw19750516兄,你能解释 一下吗?我想让它一直运行,除非是人为退出。谢谢!

是还有问题,退出时的报错信息为“输入行太长”,我将会处理并完善的,请等待。
批处理之家新域名:www.bathome.net
7 已优化并做容错处理: 发表于 2008-06-03 12:16 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线

@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-06-03 14:36
批处理之家新域名:www.bathome.net
8 发表于 2008-06-03 12:36 ·  中国 上海 上海地面通信息网络有限公司
中级用户
★★
积分 240
发帖 115
注册 2008-03-10 19:31
18年会员
UID 112561
性别 男
状态 离线
Originally posted by zw19750516 at 2008-6-3 12:16:

@echo off&color ac&mode con cols=50 lines=10&setlocal enabledelayedexpansion
title 这是我们每一个中国人的心声!!!
echo.&echo.&echo.
echo ...

非常感谢zw19750516兄。
9 日期好像有问题啊 发表于 2008-06-03 14:17 ·  中国 上海 上海地面通信息网络有限公司
中级用户
★★
积分 240
发帖 115
注册 2008-03-10 19:31
18年会员
UID 112561
性别 男
状态 离线
日期不对啊,跟本没有日期比较。
10 发表于 2008-06-03 14:53 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
Originally posted by terrytong at 2008-6-3 14:17:
日期不对啊,跟本没有日期比较。

要比较日期做什么啊,只要是天数和时间运算对了就可以了啊。
批处理之家新域名:www.bathome.net
11 发表于 2008-06-03 16:18 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
终于想到一方法让倒计时与系统时间同步。
:

@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
致精致简!
12 发表于 2008-06-03 16:43 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
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 ...

测试成功,厉害,学习了。
批处理之家新域名:www.bathome.net
13 发表于 2008-06-03 18:58 ·  中国 江苏 常州 武进区 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
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 ...

楼兄 空格没处理吧
简单!简单!再简单!
14 发表于 2008-06-05 00:12 ·  中国 江苏 常州 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
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
简单!简单!再简单!
论坛跳转: