中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何将 日期 跟 时间判断做在一起?(已解决)
作者:
标题: 如何将 日期 跟 时间判断做在一起?(已解决) 上一主题 | 下一主题
leton
初级用户





积分 170
发帖 72
注册 2007-3-11
状态 离线
『楼 主』:  如何将 日期 跟 时间判断做在一起?(已解决)

@Echo :Ri >nul 2>nul
@Set Date=""  >nul 2>nul
@For /f "tokens=2,3 delims=; " %%a in ('Date /T') do Set Date=%%a  >nul 2>nul
@Echo %Date%  >nul 2>nul
@If %Date% EQU 星期日 ( Exit ) Else ( Goto Begin-15 ) >nul 2>nul

:Begin-15  
@Set Date="" >nul 2>nul
@for /f "tokens=3 delims=- " %%a In ('date /t') do Set Date=%%a >nul 2>nul
@Echo %Date% >nul 2>nul
@If %Date% EQU 15 ( Goto Time ) Else ( Goto Begin-16 ) >nul 2>nul
   
:Begin-16  
@Set Date="" >nul 2>nul
@for /f "tokens=3 delims=- " %%a In ('date /t') do Set Date=%%a >nul 2>nul
@Echo %Date% >nul 2>nul
@If %Date% EQU 16 ( Goto Time ) Else ( Exit ) >nul 2>nul

需求:脚本每个月只运行一次,并且必须是非星期天.怎么写好?上面是自己写的,但达不到要求,只要15号和16号不是星期天,一个月就会被运行2次.


搜索后更改.

Echo On
CMDOW.EXE  /DIS
Title 客户端管理及维护脚本  
Set Path=%programfiles%\;%programfiles%\OO Software;%programfiles%\OO Software\SafeErase;%systemroot%;%systemroot%\system32;%systemroot%\data;%systemroot%\data\pstools;%systemroot%\pstools   
Setlocal,EnableDelayedExpansion&color 0a >nul 2>nul
mode con: cols=64 lines=18 >nul 2>nul
CLS
Echo ┌─────────────────────────────┐
Echo │                                                          │
Echo │                 内部客户端管理及维护脚本                 │
Echo │                                                          │
Echo │           脚本用途:客户端本地数据安全粉碎程序            │
Echo │                                                          │
Echo │     数据安全粉碎程序,完成后脚本将提示您及自动关闭       │
Echo │                                                          │
Echo │      在此过程中,切勿对系统执行重启或断电操作,谢谢        │
Echo │                                                          │
Echo └─────────────────────────────┘

:Begin  
Echo %Date:~8%|find /v "星期日"|findstr "15 16"  >nul 2>nul && Goto Cishu||Goto End

:Cishu
If not exist %systemroot%\times.txt echo 1 > %systemroot%\times.txt
For /f %%a in (%systemroot%\times.txt) do set/a times=%%a
    if %times% EQU 0 echo 本月已执行过此程序,谢谢! & timeout 5 > nul & Exit
    set/a num=%times%-1
    set/a num_=1-%num%
    echo 本月安全数据删除程序运行使用了%num_%次,剩余使用次数:%num%次
    set/a times-=1
    echo %times% > %systemroot%\times.txt
Goto time > nul
   
:Time  
Set Time="" >nul 2>nul
For /F "Tokens=1" %%a In ('Time /t') Do set Time=%%a  >nul 2>nul
Echo %Time% >nul 2>nul
If %Time% GEQ 12:30 ( Goto SafeErase ) Else ( Goto TTTime ) >nul 2>nul
   
:TTTime  
Timeout 120 >nul 2>nul
Goto Time  
  
:SafeErase  
Echo ******************************************************
Echo *                                                    *
Echo *  脚本说明:                                        *
Echo *                                                    *
Echo *      此脚本只会对磁盘空余空间进行安全粉碎;        *
Echo *                                                    *
Echo *  因删除机制问题,此删除过程将会导致系统性能下降    *
Echo *                                                    *
Echo *  并有可能导致计算机假死状态,此现象属于正常,请耐  *
Echo *                                                    *
Echo *  心等候,切勿执行关机或断电操作              *
Echo *                                                    *
Echo ******************************************************
Echo *  注意:本脚本每月执行一次,自动判断执行,请勿关闭谢谢 *
Echo ******************************************************
Echo * 正在进行安全清除磁盘空闲磁道信息...... *
Echo ******************************************
For %%i In (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i: %%i: && Call oosecmd /lowestsecurity /y /freespace %%i: >nul 2>nul
Echo ***************************
Echo * 数据清除完毕,谢谢合作 *
Echo ***************************
Timeout 5
Goto End

:End  
Set Date=""
For /f "tokens=3 delims=- " %%a in ('Date /T') do Set Date=%%a
Echo %Date%
If %Date% EQU 01 ( del %systemroot%\times.txt ) Else ( Exit )
Exit

[ Last edited by leton on 2007-7-13 at 07:18 AM ]

2007-7-9 09:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 2 楼』:  

echo %date:~8%|find /v "星期日"|findstr "15 16"&&goto time||goto :eof

2007-7-9 10:06
查看资料  发短消息 网志   编辑帖子  回复  引用回复
leton
初级用户





积分 170
发帖 72
注册 2007-3-11
状态 离线
『第 3 楼』:  

谢了,哥们

2007-7-9 10:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
leton
初级用户





积分 170
发帖 72
注册 2007-3-11
状态 离线
『第 4 楼』:  

有点不明白

echo %date:~8%|find /v "星期日"|findstr "15 16"&&goto time||goto :eof

这句能实现一个月只运行一次?

2007-7-9 10:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
leton
初级用户





积分 170
发帖 72
注册 2007-3-11
状态 离线
『第 5 楼』:  

应该还是会被运行2次....

2007-7-9 10:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
leton
初级用户





积分 170
发帖 72
注册 2007-3-11
状态 离线
『第 6 楼』:  

echo %date:~8%|find /v "星期日"|findstr "15 16"&&goto time||goto :eof

echo %date:~8%

先显示日期变量,8位??

find /v "星期日"

然后查找是否星期日

findstr "15 16“

对比 15 16 号???? 是先对比15 然后对比 16 还是 15 16 同时对比?

2007-7-9 12:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 7 楼』:  

同时对比



知,不觉多。不知,乃求知
2007-7-9 21:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: