说没有字母的USB路径(vbs)

时间:2016-07-23 08:40:14

标签: windows vbscript path usb

我正在编写一段VBScript,我想将文件(例如记事本)保存到我的USB记忆棒中。 为此,我正在使用AppActive和SendKeys" ^ s"这将弹出一个窗口询问路径。

问题是我不知道我的USB在某些计算机上会有什么字母。在我的,它的E,但在我朋友的PC上它是G(无论如何,无关紧要)。有没有办法说出不带字母的路径?

我将我的USB命名为USB"并且只是试着写下没有字母的路径。它适用于我的计算机,但它不适用于任何其他PC。有什么建议吗?

PS:我在Windows上工作(如果需要操作系统)

至于我的研究,我得到的这个链接最接近我的需要,但不是我想要的。 Getting USB Device path from USB port

更新:面条'如果你想在不知道的情况下找到驱动器号,代码真的很好

更新2 :我也找到了这个 http://www.howtogeek.com/96298/assign-a-static-drive-letter-to-a-usb-drive-in-windows-7/ 所以我基本上可以为我的USB分配一个随机字母(比方说,Z),然后简单地用它作为驱动器号(希望它也适用于Windows 10)

2 个答案:

答案 0 :(得分:0)

如果不知道已分配的驱动器号,则无法写入任何存储设备。您可能希望改为打开文件对话框,允许用户选择适当的USB驱动程序或其他存储驱动器,然后使用所选路径。

请参阅“How to open a file dialog in VBS”。

答案 1 :(得分:0)

此代码监视卷更改,如果是USB,则将文件复制到c:\ test。您的兴趣是Win32_Volume代码。

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
               Wscript.Echo objitem.DriveType
               If objitem.DriveType = 2 then
                        Wscript.Echo objItem.DriveType & " " & objItem.Name & " " & objItem.driveletter

                        Wscript.Echo "Starting Copying"
                        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