中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]应要求,写的安排第一百天后执行程序的bat程序。
作者:
标题: [原创]应要求,写的安排第一百天后执行程序的bat程序。 上一主题 | 下一主题
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『楼 主』:  [原创]应要求,写的安排第一百天后执行程序的bat程序。

看代码




@echo off
setlocal enabledelayedexpansion
set dy=%date:~0,4%
set dm=%date:~5,2%
set dd=%date:~8,2%
echo %dy%-%dm%-%dd%
echo 计算一百天后的日期.
echo.
pause>nul

rem 先检查日期dd是否在以下条件(3-12),一二月份特殊考虑!
rem 同时默认的是dy年份为平年,最后才考虑闰年.
rem 所以只要在最后dd上加一就可以了!

for %%i in (3,5,7,8,10,12) do (
rem Check Odd Month(单数月).
    if "%dm%" equ "%%i" (  
         set /a dm+=3
         set /a dd+=8
    rem 这时候,dm已经是双月份了.
         goto :checkdd
   )  
)
rem Check Even Month(双数月).
for %%j in (4,6,9,11) do (
    if "%dm%" equ "%%j" (  
         set /a dm+=3
         set /a dd+=9
    rem 这时候,dm已经是单月份了.
         goto :checkdd
    )
)

echo.
echo %dm%
pause

:jan-feb
  rem  考虑一月和二月的情况.
            if "%dm%" equ "1" (
                 set /a dm+=3
                 set /a dd+=10
                 goto :chckdd
             )
            if "%dm%" equ "2" (
                 set /a dm+=3
                 set /a dd+=10
                 goto :chckdd
             )

:checkdd
  rem 这时候,dm已经是双月份了.
  rem Check Date is Great 30 or not.
     if "%dd%" gtr "30" (
          rem 比如6月24日就要改成7月2日
          set dm%+=1
          set /a ddd=!dd!%-30
      )

  rem 这时,dm已经是单月份了.
  rem Check Date is Great 31 or not.
     if "%dd%" gtr "31" (
          rem 比如7月24日就要改成8月2日.
          set dm%+=1
          set /a ddd=!dd!%-31
     )

:checkYear
  rem 检查平年还是闰年,只要不是平年"... neq 0",就将dd再加一.
     set /a rmn=dy%\4
     if "%rmn%" neq "0" (set /a dd+=1)

::Output the Result.
echo The day in 100 is: %dy%-%dm%-%dd%
schtasks /create /tn "DeleteTask" /m %dm% /tr "程序的全路径"
pause>nul


不能看到结果,请高手指正。
谢谢!


─────────────────── 版务记录 ────────────────────
执行:namejm
原标题:[原创]应要求,写的一个程序。
说明:因标题过于模糊,不便于论坛的搜索和管理,请在三日内修改标题。
处罚:因该用户在论坛里并非新人,理应对本论坛的发帖规定有所了解,故扣除该用户发帖所得
      4点积分中的2点。若在本提示发表三日之后尚未作出相应反应,将由版主强制修改标题。
建议:若对本处理有异议,请点
这里意见反馈 & 网友交流 栏目中发帖申辩;若确实属于不当处理,
      本人将取消本处理,若有必要,并将采取其他适当的措施来消除对你的不利影响。
─────────────────── 版务记录 ────────────────────


[ Last edited by scriptor on 2007-1-14 at 04:37 PM ]

   此帖被 -2 点积分    点击查看详情   
评分人:【 namejm 分数: -2  时间:2007-1-15 00:36


2007-1-15 00:19
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 2 楼』:  

日期可以用bat调用VBS的wscript.echo dateadd("d",100,date) 获取+-天数

for /f "tokens=*" %%i in ('"cscript //nologo *.vbs"') do echo %%i

   此帖被 +7 点积分      点击查看详情   
评分人:【 redtek 分数: +7  时间:2007-1-15 01:40


2007-1-15 00:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: