我正在尝试创建一个脚本,将USB中的文件复制到我的计算机上。它会搜索USB,并将其用作驱动器号。 我有一些第三方软件可以让我在完成后弹出USB。我认为一切都很好,除了复制线。我查看过很多StackOverflow帖子,但似乎都没有答案。
错误是:
对象要求:“
我的代码:
Option Explicit
Dim objFSO, objDrive, scriptBaseName
Dim WshShell, strUserName, fso, x, v, y
Set objFSO = CreateObject("Scripting.FileSystemObject")
scriptBaseName = objFSO.GetBaseName(Wscript.ScriptFullName)
For Each objDrive In objFSO.Drives
If objDrive.DriveType = 1 And objDrive.IsReady Then
MsgBox objDrive.DriveLetter & ":\ = " & objDrive.VolumeName, vbInformation, scriptBaseName
End If
Next
Set WshShell = CreateObject("WScript.Shell")
strUserName = WshShell.ExpandEnvironmentStrings("%USERNAME%")
Set fso = CreateObject("Scripting.FileSystemObject")
x = objDrive.DriveLetter & ":\Inspirational\Inspirational_Quotes.VBS"
v = "C:\Users\" & strUserName & "\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\"
'Below was the problem
fso.CopyFile x, v, True
我试过了:
y = "Inspirational\Inspirational_Quotes.VBS"
WScript.Echo objDrive.DriveLetter & ":\" & y
我不知道如何修复错误。
然后,我只需要移除USB
'Remove the USB'(s)
WshShell.Run "D:\Inspirational\removedrive\x64\RemoveDrive_D"
WshShell.Run "D:\Inspirational\removedrive\x64\RemoveDrive_E"
我试验了这个:
fso.CopyFile """" & x & """", """" & v & """", True
但它仍然没有用。
答案 0 :(得分:1)
objDrive
是你的循环变量。循环结束后,它不会保留值/对象。您需要将值或对象分配给另一个变量,以使其可以在循环外部访问。
Set fso = CreateObject("Scripting.FileSystemObject")
For Each objDrive In fso.Drives
If objDrive.DriveType = 1 And objDrive.IsReady Then
path = objDrive.RootFolder.Path
End If
Next
x = fso.BuildPath(path, "Inspirational\Inspirational_Quotes.VBS")
行情与此问题无关。 FileSystemObject
方法可以处理带空格的路径,没有额外的引号。
您不需要创建多个FileSystemObject
个对象,BTW。只需在脚本开头创建一次对象。