【问题标题】:VBS Copy Dir to Active USB DriveVBS 复制目录到活动 USB 驱动器
【发布时间】:2014-04-19 01:41:59
【问题描述】:

希望有一个可以将文件夹及其内容复制到活动 USB 驱动器的 vbscript。因此脚本需要找到放入其中的活动 USB 驱动器。接下来将文件夹及其比赛复制到 USB 驱动器。然后在完成复制工作后需要告诉它完成了。到目前为止,我已经做到了。

Const OverWriteFiles = True
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFolder "C:\Test" , "?:\Test" , OverWriteFiles 'the "?:\Test" is the part set the usb drive at.
Wscript.Echo "I am Done."

所以,我真正需要帮助的部分是找出活动的 USB 驱动器号。接下来告诉是复制到该 USB 驱动器号。 我知道这不是很多代码。但是,任何信息都会有很大的帮助。

【问题讨论】:

    标签: vbscript usb copying


    【解决方案1】:

    这个例子显示了每个驱动器的类型:

    Set oFSO = CreateObject("Scripting.FileSystemObject")
    sRes = ""
    For Each oDrive In oFSO.Drives
        sRes = sRes & "DriveLetter: " & oDrive.DriveLetter & ", DriveType: "
        Select Case oDrive.DriveType
            Case 0
                sRes = sRes & "Unknown"
            Case 1
                sRes = sRes & "Removable"
            Case 2
                sRes = sRes & "HDD"
            Case 3
                sRes = sRes & "Network Drive"
            Case 4
                sRes = sRes & "CD-ROM"
            Case 5
                sRes = sRes & "RAM-Drive"
        End Select
        sRes = sRes & vbNewLine
    Next
    MsgBox sRes
    

    你的脚本应该是这样的:

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    For Each objDrive In objFSO.Drives
        If objDrive.DriveType = 1 Then
            objFSO.CopyFolder "C:\Test" , objDrive.DriveLetter & ":\Test" , True
            MsgBox "Copy to " & objDrive.DriveLetter & " Completed"
        End If
    Next
    

    UPD:可以通过这种方式找到最后一个驱动器:

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    For Each objDrive In objFSO.Drives
        Set objLastDrive = objDrive
    Next
    MsgBox objLastDrive.DriveLetter
    

    【讨论】:

    • 我尝试运行您的代码的第二部分。我收到有关 wscript.exe 驱动器未就绪错误的错误。但是,我运行你代码的第一部分。关于您的系统中有什么类型的驱动程序。有没有办法让最后一个驱动程序显示。我说的是他的硬盘类型。它也复制了那个驱动程序信?所以像这样(objFSO.CopyFolder "C:\Test" , objDrive.LastDriverLetter & ":\Test" , True )我要感谢你给我的代码。
    • 感谢您的更新。在您的帮助下思考。我已经得到了我现在需要做这个项目的东西。我希望有一天也可以帮助解决某人的问题。
    • 我不想这么说。如何让它检查最后一个驱动器号,然后复制最后一个驱动器号上的文件夹?我尝试添加(objFSO.CopyFolder "C:\Test" , objDrive.Drive.DriveLetter & ":\Test" )。那行代码对我不起作用。
    • 尝试添加这个objFSO.CopyFolder "C:\Test", objLastDrive.DriveLetter & ":\Test"
    • 再次感谢您的帮助..那行代码对我有用..再次感谢
    【解决方案2】:

    嗯,可能有不止一个“活动”USB 驱动器。没有什么能阻止我将闪存驱动器插入计算机上每个可用的 USB 端口。但是,您可以通过以下方法识别计算机上的 USB 驱动器(又名“可移动驱动器”)并使用 CopyFolder() 函数将文件夹复制到其中。

    Const TYPE_REMOVABLE = 1
    
    With CreateObject("Scripting.FileSystemObject")
        For Each Drive In .Drives
            If Drive.DriveType = TYPE_REMOVABLE Then
                .CopyFolder "C:\Test", Drive.DriveLetter & ":\Test", True
            End If
        Next
    End With
    

    【讨论】:

    • 让您尝试您的代码.. 我收到 wscript.exe Drive Not Ready 错误。错误说“驱动器尚未准备好使用;它的门可能是打开的。请检查驱动器 A:并确保插入了磁盘并且驱动器门已关闭。我尝试更改 TYPE_Removable = 2 它复制所有文件到系统中的每个硬盘驱动程序。就像只针对 USB 驱动程序。只是为了让你知道。我在 Win 7 64 位系统上运行此代码。如果有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多