![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-10 12:04 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 什么这段VBS监视文件删除时会返回错误呢? |
| 可打印版本 709 / 5 |
| 第1楼 fzhang | 发表于 2008-11-18 18:28 |
| 新手上路 发帖 7 积分 7 | |
|
什么这段VBS监视文件删除时会返回错误呢? 什么这段VBS监视文件删除时会返回错误呢?
'随时监视文件的建立与删除 Function monfile Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colMonitoredfolder = objWMIService.ExecNotificationQuery _ ("SELECT * FROM __InstanceOperationEvent within 1 where " _ & "Targetinstance ISA 'CIM_DirectoryContainsFile' and " _ & "TargetInstance.GroupComponent= " _ & "'Win32_Directory.Name=""c:\\\\aa""'") Do Set objEvent = colMonitoredfolder.NextEvent Set oFile = objWMIService.get(objEvent.TargetInstance.PartComponent) Select Case objEvent.Path_.Class Case "__InstanceCreationEvent" MsgBox "大小为"&oFile.FileSize&"的文件"&oFile.name&"建立" Case "__InstanceDeletionEvent" MsgBox "大小为"&oFile.FileSize&"的文件"&oFile.name&"删除" End Select Loop End Function monfile 而监视文件创建没有问题。。。。 |
|
| 第2楼 HAT | 发表于 2008-11-18 20:57 |
| 版主 发帖 5,017 积分 9,023 | |
|
返回啥样错误呢?
|
|
| 第3楼 fzhang | 发表于 2008-11-19 20:43 |
| 新手上路 发帖 7 积分 7 | |
|
vbs运行后说错误码是80041002
我查了下百度,发现没有解决办法 监视文件的创建没有问题 但是监视文件的删除就有问题了 |
|
| 第4楼 slore | 发表于 2008-11-20 03:18 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colMonitoredEvents = objWMIService.ExecNotificationQuery _ ("SELECT * FROM __InstanceOperationEvent WITHIN 3 WHERE " _ & "Targetinstance ISA 'CIM_DirectoryContainsFile' and " _ & "TargetInstance.GroupComponent= " _ & "'Win32_Directory.Name=""c:\\\\aa""'") Do While True Set objEventObject = colMonitoredEvents.NextEvent() Select Case objEventObject.Path_.Class Case "__InstanceCreationEvent" Wscript.Echo "A new file was just created: " & _ objEventObject.TargetInstance.PartComponent Case "__InstanceDeletionEvent" Wscript.Echo "A file was just deleted: " & _ objEventObject.TargetInstance.PartComponent End Select Loop |
|
| 第5楼 huahua0919 | 发表于 2008-11-20 04:14 |
| 银牌会员 发帖 780 积分 1,608 | |
|
从Slore兄的代码看,应该是在get方法获取事件对象的文件属性时,如果文件创建则能够获取其大小等相关属性,而删除则无法获取其相关属性,所以关键问题处在get方法上。
先创建文件------get方法获取对象文件属性值--------返回成功 先删除文件------get方法获取对象文件属性值--------返回失败(此时文件已经被删除) |
|
| 第6楼 fzhang | 发表于 2008-11-20 19:04 |
| 新手上路 发帖 7 积分 7 | |
Originally posted by huahua0919 at 2008-11-20 04:14: 非常感谢,让我豁然开朗 问题应该出在当文件删除后由于文件不存在,那么用get方法无法获取文件属性了。 我想过一个笨办法,把PartComponent返回的当做一个字符串,然后从字符串右边开始提取到第一个=之间的字符串。一般情况下应该返回的就是文件名+后缀名。但问题是,如果文件名本身含有=号的时候,就会出现提取到错误的文件名的情况。。。 不知有没有什么好的解决方法 [ Last edited by fzhang on 2008-11-20 at 19:11 ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |