Board logo

标题: 如何将 日期 跟 时间判断做在一起?(已解决) [打印本页]

作者: leton     时间: 2007-7-9 09:43    标题: 如何将 日期 跟 时间判断做在一起?(已解决)

@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 ]
作者: everest79     时间: 2007-7-9 10:06
echo %date:~8%|find /v "星期日"|findstr "15 16"&&goto time||goto :eof
作者: leton     时间: 2007-7-9 10:10
谢了,哥们
作者: leton     时间: 2007-7-9 10:36
有点不明白

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

这句能实现一个月只运行一次?
作者: leton     时间: 2007-7-9 10:39
应该还是会被运行2次....
作者: leton     时间: 2007-7-9 12:05
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 同时对比?
作者: flyinspace     时间: 2007-7-9 21:56
同时对比