Копирование файлов и папок на определенную метку тома
У меня есть требование скопировать некоторые файлы и папки на USB-накопитель с определенной меткой тома (чтобы учесть, что буква диска может измениться)
Я использую ниже, чтобы определить и вернуть букву диска; как затем использовать это, чтобы скопировать файлы на этот диск (и перезаписать любые существующие файлы)
Я только знаю, как использовать objShell.run "cmd /c copy c:\temp\file.xml X:\temp file\ /y", но, очевидно, не могу использовать это в этом случае.
Set objShell = CreateObject("Wscript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set colDrives = objFSO.Drives
For Each objDrive in colDrives
Select Case objDrive.DriveType
Case 1
If objDrive.VolumeName = "MyUSB" Then '
Message = Message & "Drive letter: " & objDrive.DriveLetter & VbCrLf '
Message = Message & "Drive type: " & objDrive.DriveType & VbCrLf '
Message = Message & "Volume name: " & objDrive.VolumeName & VbCrLf & VbCrLf '
End If
End Select
Next
1 ответ
Решение
Попробуйте этот пример и скажите мне результат:
'Show drive letters associated with each
DriveLetter = ""
ComputerName = "."
Set wmiServices = GetObject ( _
"winmgmts:{impersonationLevel=Impersonate}!//" _
& ComputerName)
' Get physical disk drive
Set wmiDiskDrives = wmiServices.ExecQuery ( "SELECT Caption, DeviceID FROM Win32_DiskDrive WHERE InterfaceType = 'USB'")
For Each wmiDiskDrive In wmiDiskDrives
' x = wmiDiskDrive.Caption & Vbtab & " " & wmiDiskDrive.DeviceID
'Use the disk drive device id to
' find associated partition
query = "ASSOCIATORS OF {Win32_DiskDrive.DeviceID='" & wmiDiskDrive.DeviceID & "'} WHERE AssocClass = Win32_DiskDriveToDiskPartition"
Set wmiDiskPartitions = wmiServices.ExecQuery(query)
For Each wmiDiskPartition In wmiDiskPartitions
'Use partition device id to find logical disk
Set wmiLogicalDisks = wmiServices.ExecQuery ("ASSOCIATORS OF {Win32_DiskPartition.DeviceID='" _
& wmiDiskPartition.DeviceID & "'} WHERE AssocClass = Win32_LogicalDiskToPartition")
x = ""
For Each wmiLogicalDisk In wmiLogicalDisks
'x = x & wmiDiskDrive.Caption & " " & wmiDiskPartition.DeviceID & " = " & wmiLogicalDisk.DeviceID
'Wscript.echo x
Wscript.echo "The DriveLetter of your USB Key is = " & wmiLogicalDisk.DeviceID & "\"
DriveLetter = wmiLogicalDisk.DeviceID
Next
Next
Next
Set WS = CreateObject("WScript.Shell")
Command = "cmd /c copy c:\temp\file.xml " & DriveLetter & "\ /y"
wscript.echo Command
Result = ws.run(Command,0,False)
Или что-то типа того:
Set Ws = CreateObject("WScript.Shell")
Set FSO=CreateObject("Scripting.FileSystemObject")
For each Drv in FSO.Drives
If Drv.DriveType=0 Then Dtype="Unknown "
If Drv.DriveType=1 Then Dtype="Removable"
If Drv.DriveType=2 Then Dtype="Fixed "
If Drv.DriveType=3 Then Dtype="Network "
If Drv.DriveType=4 Then Dtype="CD-ROM "
If Drv.DriveType=5 Then Dtype="RAM Disk "
If Drv.IsReady Then
If Drv.DriveType=1 Then
Dfree=Drv.FreeSpace
DfreeMB=FormatNumber(Drv.FreeSpace/(1024^2),0)&" MB"
DriveLetter=Drv.DriveLetter
End if
End if
Next
MsgBox "Espace Libre dans Le Flash Disk " & DriveLetter & ":\"&" est Environ de " & DfreeMB,64,"Espace Libre"
Command = "cmd /c copy c:\temp\file.xml " & DriveLetter & ":\ /y"
wscript.echo Command
Result = ws.run(Command,0,True)