【问题标题】:Why is my source folder and destination folder merging names? I want source folder inside my destination为什么我的源文件夹和目标文件夹会合并名称?我想要目的地内的源文件夹
【发布时间】:2015-08-13 21:35:57
【问题描述】:
Dim WshNetwork,objNetwork, WshShell, objFSO, objItem
Set objNetwork = CreateObject("Wscript.Network")
Set WshNetwork = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set WSHShell = CreateObject("WScript.Shell")
If not objFSO.FolderExists("C:\Backups") Then
   objFSO.CreateFolder "C:\Backups"
Else
End If
If not objFSO.FolderExists("C:\Backups\" & strUserName) Then
   objFSO.CreateFolder ("C:\Backups\" & strUserName)
Else
End If
Set FSO = CreateObject("Scripting.FileSystemObject") 
strUserName = objNetwork.UserName
Set oMainFolder = FSO.GetFolder("C:\Users\" & strUserName &"\Documents\")
For Each oFolder In oMainFolder.SubFolders 
  On Error Resume Next
   If oFolder.Name <> "My Music" and oFolder.Name <> "My Pictures" and oFolder.Name <> "My Videos" Then
      FSO.CopyFolder ("C:\Users\" & strUserName &"\Documents\") & oFolder.Name, ("C:\Backups\" & strUserName) & oFolder.Name, True  

      FSO.CopyFile ("C:\Users\" & strUserName &"\Documents\*.*"), ("C:\Backups\" & strUserName), True
   End If
Next

【问题讨论】:

    标签: vbscript directory copying file-copying


    【解决方案1】:

    因为这里

    If not objFSO.FolderExists("C:\Backups\" & strUserName) Then
    

    变量strUserName 未初始化/为空。

    【讨论】:

    • 如果不是 objFSO.FolderExists("C:\Backups\" & strUserName & "\") 似乎没有改变我的问题。
    • @Namemybullets - 请思考“已初始化”的含义并记住 VBScript 语句是按顺序执行的。
    • -_- 呵呵,哈哈。谢谢!我用你的提示修复了它。所以我将 strUserName 向上移动到变量区域,将源文件夹很好地分成两个。文件进入用户名,文件夹进入用户名+源。为了解决这个问题,我返回并在 Copy.Folder 中的目标文件夹路径之后添加了“\”。非常感激!再次感谢您:D
    【解决方案2】:
    Dim WshNetwork,objNetwork, WshShell, objFSO, objItem
    
    Set objNetwork = CreateObject("Wscript.Network")
    Set WshNetwork = WScript.CreateObject("WScript.Shell")
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set WSHShell = CreateObject("WScript.Shell")
    Set FSO = CreateObject("Scripting.FileSystemObject") 
    
    strUserName = objNetwork.UserName
    
    Set oMainFolder = FSO.GetFolder("C:\Users\" & strUserName &"\Documents\")
    
    If not objFSO.FolderExists("C:\MyFiles") Then
      objFSO.CreateFolder "C:\MyFiles"
    Else
    End If
    
    If not objFSO.FolderExists("C:\MyFiles\" & strUserName & "\") Then
      objFSO.CreateFolder ("C:\MyFiles\" & strUserName & "\")
    Else
    End If
    
    For Each oFolder In oMainFolder.SubFolders 
      On Error Resume Next
      If oFolder.Name <> "My Music" and oFolder.Name <> "My Pictures" and 
      oFolder.Name <> "My Videos" Then
        FSO.CopyFolder ("C:\Users\" & strUserName &"\Documents\") & oFolder.Name, _
          ("C:\MyFiles\" & strUserName) & "\" & oFolder.Name, True  
        FSO.CopyFile ("C:\Users\" & strUserName &"\Documents\*.*"), _
          ("C:\MyFiles\" & strUserName), True
      End If
    Next
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-18
      • 1970-01-01
      • 2017-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多