中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-09 16:33
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 这个脚本怎么修改才不会出错 查看 636 回复 2
楼 主 这个脚本怎么修改才不会出错 发表于 2008-09-05 13:25 ·  中国 上海 静安区 电信
初级用户
★★
积分 191
发帖 86
注册 2008-08-18 12:12
17年会员
UID 123477
性别 男
状态 离线
@echo off
color 1f
for /f "tokens=1 delims= " %%a in ('date /t') do call :input %%a 10
:input
call :Date2Day %1 days
set/a days=%days%+%2
call :Day2Date %days% date

echo.
echo -----------结果---------------
echo.
echo 你查询的日期为:%date%
echo ------------------------------
cmd /k

:Date2Day
setlocal ENABLEEXTENSIONS
for /f "tokens=1-3 delims=/-, " %%a in ('echo/%1') do (set yy=%%a & set mm=%%b & set dd=%%c)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
endlocal&set %2=%j%&goto :EOF

:Day2Date
setlocal ENABLEEXTENSIONS
set /a i=%1,a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
endlocal&set %2=%yy%-%mm%-%dd%&goto :EOF

—————————————————————————————————————
想把下面一段内容放到批处理最下端,就出错了,请问怎么修改呢?
echo.
echo -----------结果---------------
echo.
echo 你查询的日期为:%date%
echo ------------------------------
cmd /k
2 发表于 2008-09-05 14:01 ·  中国 江苏 苏州 中移铁通
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
18年会员
UID 99089
性别 男
状态 离线
放到最后程序根本就执行不到,所以会出错,因为你每个子程序后都都goto :eof
3 发表于 2008-09-05 14:35 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@echo off
color 1f
for /f "tokens=1 delims= " %%a in ('date /t') do call :input %%a 10
:input
call :Date2Day %1 days
set/a days=%days%+%2
call :Day2Date %days% date
goto :end

:Date2Day
setlocal ENABLEEXTENSIONS
for /f "tokens=1-3 delims=/-, " %%a in ('echo/%1') do (set yy=%%a & set mm=%%b & set dd=%%c)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
endlocal&set %2=%j%&goto :EOF

:Day2Date
setlocal ENABLEEXTENSIONS
set /a i=%1,a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
endlocal&set %2=%yy%-%mm%-%dd%&goto :EOF

:end
echo.
echo -----------结果---------------
echo.
echo 你查询的日期为:%date%
echo ------------------------------
cmd /k
论坛跳转: