Board logo

标题: 中国奥运!ZWzw19750516 的作品(VISTA下会出错!) [打印本页]

作者: yinjie1755     时间: 2008-5-31 00:24    标题: 中国奥运!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 ]

作者: terrytong     时间: 2008-6-2 15:36    标题: 这个P为什么会退出啊?
看里面的程序,不知道是怎么退出的,应该是个死循环啊。

作者: bat-zw     时间: 2008-6-2 17:51
Originally posted by terrytong at 2008-6-2 15:36: 看里面的程序,不知道是怎么退出的,应该是个死循环啊。
这个批本来就没设置退出,要退出直接关闭窗口就是的啊,再说这个批不设置成重复的循环是运行不了的。 ---------------------------------------------------------------------------------------------------------- 源码已优化在7楼。 [ Last edited by zw19750516 on 2008-6-3 at 12:37 PM ]

作者: bat-zw     时间: 2008-6-2 17:54
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,应该是系统时间的设置上会有所不同,所以才会出错。

作者: terrytong     时间: 2008-6-3 10:59    标题: 它还是会自动退出啊?
运行了大概10秒钟就自动退出了,我想不通它是怎么退出的。 zw19750516兄,你能解释 一下吗?我想让它一直运行,除非是人为退出。谢谢!

作者: bat-zw     时间: 2008-6-3 11:22
Originally posted by terrytong at 2008-6-3 10:59: 运行了大概10秒钟就自动退出了,我想不通它是怎么退出的。 zw19750516兄,你能解释 一下吗?我想让它一直运行,除非是人为退出。谢谢!
是还有问题,退出时的报错信息为“输入行太长”,我将会处理并完善的,请等待。

作者: bat-zw     时间: 2008-6-3 12:16    标题: 已优化并做容错处理:
@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 ]

作者: terrytong     时间: 2008-6-3 12:36
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兄。

作者: terrytong     时间: 2008-6-3 14:17    标题: 日期好像有问题啊
日期不对啊,跟本没有日期比较。

作者: bat-zw     时间: 2008-6-3 14:53
Originally posted by terrytong at 2008-6-3 14:17: 日期不对啊,跟本没有日期比较。
要比较日期做什么啊,只要是天数和时间运算对了就可以了啊。

作者: 26933062     时间: 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 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

作者: bat-zw     时间: 2008-6-3 16:43
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 ...
测试成功,厉害,学习了。

作者: terse     时间: 2008-6-3 18:58
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 ...
楼兄 空格没处理吧

作者: terse     时间: 2008-6-5 00:12
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