中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-07 11:18
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » vbs监控文件的代码求教 查看 777 回复 1
楼 主 vbs监控文件的代码求教 发表于 2008-02-11 12:44 ·  中国 浙江 温州 电信
中级用户
★★
积分 458
发帖 196
注册 2006-10-05 12:04
19年会员
UID 64614
状态 离线
public lastchange,fso,f,WshShell
filespec="记录.txt"
Set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFile(filespec)
lastchange=f.DateLastModified
msgbox "文件最后修改时间:"&lastchange&vbcrlf&"现在开始监控文件....."
for i=1 to 10000000
call check()
next
msgbox "程序结束"

function check()
getnow=f.DateLastModified
if datediff("s",lastchange,getnow)<>0 then
WshShell.Run "autos.bat",0,true
wscript.sleep 1000
lastchange=f.DateLastModified
end if
wscript.sleep 1000
end function




以上是一个监视文件是否改动的vbs脚本

通过监视文件的最后修改时间和上次记录的时间作比较,如果时间不同则说明文件发生变化

但求各位帮忙添加一个功能

如何实现X小时后如果文件没有变化则运行某程序
2 发表于 2008-02-12 14:13 ·  中国 广东 佛山 珠江宽频
初级用户
积分 31
发帖 17
注册 2007-10-31 22:38
18年会员
UID 101331
性别 男
状态 离线
DateDiff 函数的第一个参数有"s"和 "h"的选项,可以满足测试秒和小时。我根据你的代码稍作修改。假设如果X小时后文件没有变化则运行Xhours_autos.bat。
另:你的子函数没有返回值,可改为SUB。
*********************************************************
public lastchange,fso,f,WshShell,blnYes
Const Xhours=5
Const filespec="记录.txt"


Set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFile(filespec)
lastchange=f.DateLastModified
msgbox "文件最后修改时间:"&lastchange&vbcrlf&"现在开始监控文件....."
blnYes=TRUE

Do While blnYes
getnow=f.DateLastModified
checkLastTime(getnow)
wscript.sleep 1000
Loop
msgbox "程序结束"

Set WshShell =Nothing
Set fso = Nothing
Set f = Nothing

'- - - - - - - - - - - - -- - - - - - - - -
Sub checkLastTime(NowTime)
'监视文件是否改动,如果X小时后文件没有变化则运行Xhours_autos.bat

If datediff("s",lastchange,NowTime)<>0 Then
WshShell.Run "autos.bat",0,true
wscript.sleep 1000
lastchange=f.DateLastModified
End If

Hours=datediff("h",lastchange,NowTime)
If Hours=Xhours Then
WshShell.Run "Xhours_autos.bat",0,true
wscript.sleep 1000
lastchange=f.DateLastModified
If MsgBox("你是否要继续监控文件?",,vbYesNo)=vbNo Then
blnYes=FALSE
End If
End If

End Sub

****************************************************
我自己没有经测试。
论坛跳转: