首页 > 编程 > VBScript > 正文

vbs实现只复制比目标文件更新的文件

2020-06-26 18:36:04
字体:
来源:转载
供稿:网友
有时候我们需要时候备份一些文件,只有当这个文件被修改了并且不是空的时候才复制
 
因为网站需要频繁的更新首页,有时候使用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下也可以的。需要的可以自己扩展下。

 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表