#/bin/bash
#
beforTime=02:00
afterTime=08:00
beforTime=$(echo $beforTime | awk -F : {‘print $1‘})
afterTime=$(echo $afterTime | awk -F : {‘print $1‘})
Flag=0
while true
do
sleep 2s
echo "date: $(date +"%Y-%m-%d %H:%M:%S")"
if [ $(date +%H) -eq $beforTime ]; then
CurDate=$(date +%d)
ChangeDate=$(expr $CurDate - 1)
date -s ‘$(date +"%Y-%m-$ChangeDate %H:%M:%S")‘
if [ $? -eq 0 ]; then
echo "Changed date: $(date +"%Y-%m-$ChangeDate %H:%M:%S")"
Flag=1
break
fi
fi
done
if [ $Flag -eq 1 ];then
while true
do
sleep 2s
echo "date: $(date +"%Y-%m-%d %H:%M:%S")"
if [ $(date +%H) -eq $afterTime ]; then
CurDate=$(date +%d)
ChangeDate=$(expr $CurDate + 1)
date -s ‘$(date +"%Y-%m-$ChangeDate %H:%M:%S")‘
if [ $? -eq 0 ]; then
echo "Changed date: $(date +"%Y-%m-$ChangeDate %H:%M:%S")"
Flag=0
break
fi
fi
done
fi@echo off
@set StartDate=05
@set ChangeDate=04
@set ChangeTime=18:59
@set endTime=19:00
@echo 开始任务:05号1点更改时间
@set ErrNum=0
:ProcessDate
@if %ErrNum% EQU 1 (ping /n 5 127.0.0.1 > nul)
@for /f "usebackq tokens=1,2,3 delims=-/ " %%i in (`date /t`) do (
set Year=%%i
set Mon=%%j
set TodayDate=%%k
echo Real_Date: %%i-%%j-%%k %TodayDate%
)
@if %TodayDate% NEQ %StartDate% (
set ErrNum=1
goto :ProcessDate
)
:ProcessTime
@if %TodayDate% EQU %StartDate% (
for /f "usebackq tokens=1,2 delims=-/ " %%a in (`time /t`) do (
if "%%a" NEQ "%ChangeTime%" goto :ProcessTime
if "%%a" == "%ChangeTime%" call :ChangeCurDate
:ProcessTime_2
for /f "usebackq tokens=1,2 delims=-/ " %%a in (`time /t`) do (
if "%%a" == "%endTime%" (
echo %Year%-%Mon%-%TodayDate%
date %Year%-%Mon%-%TodayDate%
goto :eof
) else (
goto :ProcessTime_2
)
)
)
)
:ChangeCurDate
echo Change_Date: %Year%-%Mon%-%ChangeDate%
@date %Year%-%Mon%-%ChangeDate%
@goto :eof
本文出自 “专注于Oracle性能调优” 博客,谢绝转载!
原文:http://5073392.blog.51cto.com/5063392/1533596