BAT定时同步任务

关键字:BAT 批处理文件 当前系统时间 前几天 后台运行不显示窗口

参考文章:

文章一:(已结)如果在WINDOWS下DOS命令行删除N天以前的文件

文章二:可不可以让BAT后台运行从而不显示窗口

 

任务描述:

台式机作开发用,每天文件都会有变化,为了将台式机和笔记本上的项目内容保持同步,每次都需要手动进行拷贝,特别麻烦。所以尝试将所有修改或新增的文件转移到一个固定的同步目录,由系统在我每天吃晚饭时候自动调度拷贝任务将此目录下文件拷贝到U盘。

目的明确,开工了~

1、创建固定同步源目录: D:\synchronize

2、写批处理文件(参考文章一)

executeSynchronize.bat:

@echo off
rem *******************************************************************************************************************************************************
rem 本批处理文件用来将硬盘某固定的同步目录内容同步至移动存储设备中,并将批处理文件的处理结果放在目标目录以日期命名的log文件中(例如2010-01-22.log)。
rem srcPath:源同步目录
rem destPath:目标U盘路径
rem xcopy params— /E: 复制目录和子目录,包括空的。 /Y:复制文件审核设置(拷贝的时候若发现目标目录已经存在对应文件,不给出“是否覆盖”提示)
rem %date:~0,10%提取当前日期(例如:2010-01-22 星期五)前10个字符
rem :DateDel本段程序用来删除昨天的log文件,后面参数表示在当前日期上加减的天数,例如昨天就需要跟参数-1,前天需要跟参数-2,明天需要跟参数1,后天需要跟参数2
rem *******************************************************************************************************************************************************

 
set srcPath=D:\synchronize
set destPath=G:\

 

xcopy %srcPath% %destPath% /E /Y >%destPath%%date:~0,10%.log
call :DateDel -1
goto :EOF

 

:DateDel
call :Date2Day %date:~0,10% today
set /a today+=%1
call :Day2Date %today% destday
del %destPath%%destday%.log
goto :EOF

 

: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

 

3、调用BAT(参考文章二)

 

其实写完BAT文件已经可以完成我们要实现的拷贝功能了,但是每次执行BAT都会启动黑色的Shell窗口,感觉很突兀也不美观,能否在后台自动调度而前台感受不到呢,答案是肯定的。

 

将步骤2的executeSynchronize.bat文件放在Windows/system32目录中,方便程序外面调用,然后再任意目录下创建synchronize.vbs文件,内容如下:

 

set ws = createobject(“wscript.shell”)
ws.run”executeSynchronize”,vbhide

 

双击文件即可执行。

 

4、添加系统调度任务

 

开始--程序--附件--系统工具--任务计划--选择添加任务计划--点击下一步--点击(浏览),找到程序一步一步完成

 

http://xzh.i3geek.com
Back to Top