vbs实现只复制比目标文件更新的文件
来源: 阅读:806 次 日期:2016-06-29 08:54:31
温馨提示: 小编为您整理了“vbs实现只复制比目标文件更新的文件”,方便广大网友查阅!

有时候我们需要时候备份一些文件,只有当这个文件被修改了并且不是空的时候才复制.

因为网站需要频繁的更新首页,有时候使用cdn经常导致首页正在生成内容的时候同步数据(可能是冲突,经常导致首页是空的),这就想了先生成一个不是首页的index2.htm然后再复制一遍为index.htm,这样index2的频繁读写也没问题了。所以先判断index2.htm不是空的时候才复制,而且必须是比index.htm更新的时候才复制。这样就需要一些脚本的支持了。

前几天写了一个(bat+xcopy实现只复制比目标文件更新的文件)还是出现为空的情况,这里特加些功能,参考很多网站的文章,感谢百度的结果很给力。

先来个bat版的

代码如下:

@echo off

::每5分钟复制以下首页

for /f %%i in ('dir /b c:\index2.htm') do (

set indexdx=%%~zi

)

if %indexdx% gtr 5120 (

echo y | xcopy c:\index2.htm /d /r /k c:\index.htm

)

其中for /f %%i in ('dir /b c:\index2.htm') do ( set indexdx=%%~zi ) 是bat中获取index2.htm文件大小的。

然后通过if %indexdx% gtr 5120 ( 实现判断是不是大于5120个字节主要就是下面这个代码了功能更强,也比较简单.

代码如下:

dim fso

set fso = createobject(scripting.filesystemobject)

set fn2=fso.getfile(c:\index2.htm)

flsize2=fn2.size

fldate2=fn2.datelastmodified

set fn=fso.getfile(c:\index.htm)

flsize1=fn.size

fldate1=fn.datelastmodified

if fso.fileexists(c:\index2.htm) and flsize2>50000 and fldate2>fldate1 then

fso.getfile(c:\index2.htm).copy(c:\index.htm)

if err.number=0 then writehistory 成功&now(),log.txt

end if

sub writehistory(hischars, path)

const forreading = 1, forappending = 8

dim fso, f

set fso = createobject(scripting.filesystemobject)

set f = fso.opentextfile(path, forappending, true)

f.writeline hischars

f.close

end sub

还有日志功能,当前bat下也可以的。需要的可以自己扩展下。

更多信息请查看脚本栏目
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map