复制文件错误 - 所需对象:引号

时间:2017-06-01 08:58:59

标签: file vbscript copy

我正在尝试创建一个脚本,将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

但它仍然没有用。

1 个答案:

答案 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。只需在脚本开头创建一次对象。