Batch file 连接USB时基于Bat文件的弹出窗口自动播放

Batch file 连接USB时基于Bat文件的弹出窗口自动播放,batch-file,ftp,usb,google-glass,autoplay,Batch File,Ftp,Usb,Google Glass,Autoplay,执行以下操作的最佳方法是什么: 当我将我的设备(让它成为特定的设备-比如谷歌眼镜)连接到USB端口时,我希望某个代理会立即弹出(比如windows autoplay),向我显示设备中当前的文件列表,让我选择要上载到ftp服务器的文件,并在最后进行一些“上载”按钮,以便将所选文件上载到ftp,我会预先定义它。 我还希望,在用户选择文件后,它将根据预定义的规则重命名文件名,然后才将其上载到服务器 有办法做到这一点吗?是否有一个工具已经做到了这一点或类似的事情 我曾经用一个脚本编写了一个.bat文件,

执行以下操作的最佳方法是什么: 当我将我的设备(让它成为特定的设备-比如谷歌眼镜)连接到USB端口时,我希望某个代理会立即弹出(比如windows autoplay),向我显示设备中当前的文件列表,让我选择要上载到ftp服务器的文件,并在最后进行一些“上载”按钮,以便将所选文件上载到ftp,我会预先定义它。 我还希望,在用户选择文件后,它将根据预定义的规则重命名文件名,然后才将其上载到服务器

有办法做到这一点吗?是否有一个工具已经做到了这一点或类似的事情


我曾经用一个脚本编写了一个.bat文件,该脚本可以进行重命名和上载,因此,如果在我按下“上载”按钮时有办法运行脚本,那就太好了。

如果用cscript启动脚本,它将写入控制台而不是消息框

cscript <path to script>
可移动驱动器为drivetype=2。首先创建C:\Test。注意:我已将所有设备的事件类型更改为仅添加/删除驱动器

strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2") 
Set evtDevice = objWMIService.ExecNotificationQuery ("SELECT * FROM Win32_VolumeChangeEvent")

Wscript.Echo "Waiting for events ..."
Do
    Set objReceivedEvent = evtDevice.NextEvent
    'report an event
    Wscript.Echo " Win32_Device Changed event occurred" & VBNewLine
    If objReceivedEvent.EventType = 1 Then 
         Wscript.Echo "Type = Config Changed" 
    ElseIf objReceivedEvent.EventType = 2 Then 
         Wscript.Echo "Type = Device Arrived" 

         Set colItems = objWMIService.ExecQuery("Select * From Win32_Volume")
         For Each objItem in colItems
               If objitem.DriveType = 2 then
                        Wscript.Echo objItem.DriveType & " " & objItem.Name & " " & objItem.driveletter

                        Set objShell = CreateObject("Shell.Application")
                        Set Ag=Wscript.Arguments
                        set WshShell = WScript.CreateObject("WScript.Shell")

                        Set SrcFldr=objShell.NameSpace(objitem.driveletter)
                        Set DestFldr=objShell.NameSpace("c:\test\")
                        Set FldrItems=SrcFldr.Items
                        DestFldr.CopyHere FldrItems, &H214
                        Wscript.Echo "Finished Copying"


               End If
        Next


    ElseIf objReceivedEvent.EventType = 3 Then 
         Wscript.Echo "Type = Device Left" 
    ElseIf objReceivedEvent.EventType = 4 Then 
         Wscript.Echo "Type = Computer Docked" 
    End If
Loop
下面是等待设备到达/离开的示例脚本


请注意,它会运行两次,因此您可能希望对其进行改进,因为每次到达都有两个通知。此外,还需要进行检查,例如,如果您插入一个U盘,而另一个U盘已插入,则两个U盘都将被复制。

使用哪种语言?Visual Basic?VBScript。因此,您可以在VB6或vbscript中使用(尽管VB6没有echo命令-使用msgbox),因此粘贴到新的记事本文档并另存为DeviceEvent.vbsGreat,它在连接时可以识别USB。现在,有没有办法在这个脚本中添加几行代码,这样当USB连接时,它也会从USB中的特定文件夹复制文件,并将它们粘贴到硬盘中的某个位置?如果你也知道VBScript中的一些命令可以将文件上传到ftp,那就最好了。谢谢!!是的,但你说你已经写了。您的第一个问题是找出发生了什么事件(可能是摄像头)<代码>wmic卷获取标题、容量、可用空间/格式:表列出可用驱动器(您可以在vbscript中完成)。要为/f“tokens=1*delims=,%a in('wmic volume get driveletter/format:csv')分析命令的输出,请执行echo%a%B
strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2") 
Set evtDevice = objWMIService.ExecNotificationQuery ("SELECT * FROM Win32_VolumeChangeEvent")

Wscript.Echo "Waiting for events ..."
Do
    Set objReceivedEvent = evtDevice.NextEvent
    'report an event
    Wscript.Echo " Win32_Device Changed event occurred" & VBNewLine
    If objReceivedEvent.EventType = 1 Then 
         Wscript.Echo "Type = Config Changed" 
    ElseIf objReceivedEvent.EventType = 2 Then 
         Wscript.Echo "Type = Device Arrived" 

         Set colItems = objWMIService.ExecQuery("Select * From Win32_Volume")
         For Each objItem in colItems
               If objitem.DriveType = 2 then
                        Wscript.Echo objItem.DriveType & " " & objItem.Name & " " & objItem.driveletter

                        Set objShell = CreateObject("Shell.Application")
                        Set Ag=Wscript.Arguments
                        set WshShell = WScript.CreateObject("WScript.Shell")

                        Set SrcFldr=objShell.NameSpace(objitem.driveletter)
                        Set DestFldr=objShell.NameSpace("c:\test\")
                        Set FldrItems=SrcFldr.Items
                        DestFldr.CopyHere FldrItems, &H214
                        Wscript.Echo "Finished Copying"


               End If
        Next


    ElseIf objReceivedEvent.EventType = 3 Then 
         Wscript.Echo "Type = Device Left" 
    ElseIf objReceivedEvent.EventType = 4 Then 
         Wscript.Echo "Type = Computer Docked" 
    End If
Loop