标题: 求高手~(监测到U盘后自动执行一个文件的批处理)
[打印本页]
作者: cb9020291
时间: 2010-1-8 15:51
标题: 求高手~(监测到U盘后自动执行一个文件的批处理)
每10秒监测一次,当电脑插上U盘后,自动执行一个文件。请问该如何实现?
作者: clamber
时间: 2010-1-8 17:55
用计划任务每1分钟执行一次指定程序:
schtasks /create /sc minute /mo 1 /st 00:00:00 /tn "autor" /ru system /tr """"C:\autor.bat""""
把下面批处理保存到c:\autor.bat,系统每1分钟查找一次是否存在不为空的可移动磁盘,如果有,就执行指定程序。
@echo off
setlocal enabledelayedexpansion
for /f "skip=1 tokens=1,2 delims=\" %%a in ('fsutil fsinfo drives^|find /v ""') do (
set aa=%%a
fsutil fsinfo drivetype !aa:~-2!|findstr "可移动"&&start "" "C:\Program Files\Windows NT\Pinball\PINBALL.EXE"
)
endlocal
这是在后台用SYSTEM权限运行的,如果要换成前台就要配合AT的前台运行命令执行。
[
Last edited by clamber on 2010-1-8 at 18:29 ]
作者: clamber
时间: 2010-1-8 18:36
LZ说每隔10秒,用P处理这样搞是不是有点费内存了?把上面改一下贴上来,不知道这样是不是LZ需要的哈
@echo off
:re
setlocal enabledelayedexpansion
for /f "skip=1 tokens=1,2 delims=\" %%a in ('fsutil fsinfo drives^|find /v ""') do (
set aa=%%a
fsutil fsinfo drivetype !aa:~-2!|findstr "可移动"&&start "" "C:\Program Files\Windows NT\Pinball\PINBALL.EXE"
)
ping -n 10 127.1>nul
endlocal
goto re
作者: newxso
时间: 2010-1-8 19:58
标题: U盘和移动硬盘监视脚本
用批处理循环会很占资源,用VBS会好些:
'监视新增“可移动磁盘(U盘)”和新增“本地磁盘(HDD格式U盘或移动硬盘)”
'有新插入的就自动复制其中的所有文件和文件夹到d:\Test中
'若出现多个新增“可移动磁盘”和“本地磁盘”的话,每个盘中的内容均被复制
'取得WSH对象
Set WshShell=WScript.CreateObject("WScript.Shell")
'取得WMI服务对象
Set objWMIService=GetObject("winmgmts:\\.\root\cimv2")
'执行事件通知查询,具体是Win32_LogicalDisk类下的__InstanceOperationEvent,
'并且将结果保存在colEvents变量中
Set colEvents=objWMIService.ExecNotificationQuery ("Select * From __InstanceOperationEvent Within 5 Where TargetInstance isa 'Win32_LogicalDisk'")
'设置目标目录(存放复制文件的文件夹)
strFolder="d:\test\"
'不设置退出条件的循环,除非收到结束脚本语句:Wscript.Quit
Do While True
'设置变量为集合中的新事件
Set objEvent=colEvents.NextEvent
'判断磁盘类型是否是可移动磁盘和本地磁盘(针对移动硬盘)
If (objEvent.TargetInstance.DriveType=3 OR objEvent.TargetInstance.DriveType=2) Then
'判断对象的类别是不是属于__InstanceCreationEvent
'__InstanceCreationEvent (它会告诉我们已经创建了一个新驱动器)
'__InstanceDeletionEvent (它会告诉我们已经删除了一个现有驱动器)
If objEvent.Path_.Class="__InstanceCreationEvent" Then
'获取新驱动器的盘符
NewDri=objEvent.TargetInstance.DeviceId&"\"
'调用xcopy命令,复制新增盘下的内容(用CMD命令可以解决没有权限问题)
WshShell.Run "cmd.exe /c xcopy /e/h/r/y "&NewDri&" "&chr(34)&strFolder&chr(34),0,true
End If
End If
'延时1秒(10000为10秒)
Wscript.Sleep 1000
Loop
[
Last edited by newxso on 2010-1-8 at 20:22 ]