2014-10-01 57 views
0

我想弄清楚如何製作一個vbscript,它將掃描具有特定名稱的USB設備,然後一旦找到一個文件複製到它。Vbscript掃描驅動器的某個名稱,而不是驅動器號,並將文件複製到該USB驅動器名稱

示例代替掃描驅動器號J掃描與要複製到的特定USB設備對應的特定名稱。

假設我想要查找的USB設備名爲TEAM,我希望腳本掃描名稱TEAM而不是驅動器號並將文件複製到它。我想這樣,因爲驅動器號可以更改一次我的USB設備名爲TEAM可能是字母J接下來它可能是E

這樣,它不必擔心驅動器盤符是否更改,並且始終能夠訪問我的設備,除非我更改USB設備的名稱。

我是編程新手,我製作了一個腳本來掃描一個字母,但我想改變它,所以它使用USB名稱而不是驅動器號。

感謝對此的幫助將不勝感激。

+1

歡迎來到SO。向我們展示你到目前爲止所嘗試過的。 – Alex 2014-10-01 02:00:56

回答

0

向WMI詢問編輯所需的信息

Option Explicit 

Function getDriveLetterFromVolumeName(volumeName) 
Dim volumes, volume 

    ' Unless we found a matching volume, an empty string will be the returned value 
    getDriveLetterFromVolumeName="" 

    ' Ask WMI for the list of volumes with the requested label 
    Set volumes = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") _ 
        .ExecQuery("SELECT DriveLetter FROM Win32_Volume WHERE Label='" & volumeName & "'") 

    ' If exist an matching volume, get its drive letter 
    If volumes.Count > 0 Then 
     For Each volume In volumes 
      getDriveLetterFromVolumeName = volume.DriveLetter 
      Exit For 
     Next 
    End If 

End Function 

WScript.Echo getDriveLetterFromVolumeName("TEAM") 

適應評論

因此,一旦我們能確定它是否是可用和驅動器盤符是什麼,唯一剩下的任務是將源文件複製到目標驅動器

Dim fileToCopy 
    fileToCopy = "c:\source\folder\myfile.txt" 

Dim usbDrive 
    usbDrive = getDriveLetterFromVolumeName("TEAM") 

    If Not (usbDrive="") Then 
     With WScript.CreateObject("Scripting.FileSystemObject") 
      If .FileExists(fileToCopy) Then 
       .CopyFile fileToCopy, usbDrive & "\targetFolder\myFile.txt" 
      End If 
     End With 
    End If 
+0

MC ND您提供的代碼執行但彈出一個空的消息框,就是這樣。我是否會添加一些代碼? – Travy641 2014-10-02 03:36:57

+0

@ Travy641,'getDriveLetterFromVolumeName'在沒有找到指定標籤的卷的情況下返回一個空字符串。這是空的消息框,帶有空字符串的'wscript.echo',因爲沒有找到匹配的卷。 – 2014-10-02 05:33:05

+0

好吧,我想通了,我重命名它,並拔掉它,並重新連接設備,現在它識別它時,我運行腳本,我怎麼可以利用該腳本,並添加一個函數或東西,將執行復制文件功能,然後檢查設備字母的腳本自動複製到該設備。對評論欄中的問題抱歉。謝謝 – Travy641 2014-10-02 05:40:51

相關問題