【问题标题】:Copying files from source folder to target folder将文件从源文件夹复制到目标文件夹
【发布时间】:2017-03-31 10:45:11
【问题描述】:

您好,我正在尝试将文件从源文件夹复制到目标文件夹。但是当我运行它时,我收到一个错误“错误的文件名或编号”。

这是我的代码:

Option Explicit
Dim srcFolder, trgFolder

srcFolder = "\\sunpowercorp.com\spap\SPMM-QA\Public-Read_Write\SPMM QA Documents\Dominic Yumul\Toshiba Monthly Quality Report"
trgFolder = "http:\\dms\departments\QUALITY\Quality Ops in the Box\Quality Ops in the Box library\025 SPMM QA Staff Documents\Toshiba Monthly Quality Report"

CopyFilesAndFolders srcFolder, trgFolder
WScript.Quit

Sub CopyFilesAndFolders(ByVal strSource, ByVal strDestination)
    Dim ObjFSO, ObjFolder, ObjSubFolder, ObjFile, files
    Dim TargetPath
    Set ObjFSO = CreateObject("scripting.filesystemobject")
    'connecting to the folder where is going to be searched
    Set ObjFolder = ObjFSO.GetFolder(strSource)
    TargetPath = Replace (objFolder.path & "\", strSource, strDestination,1,-1,vbTextCompare)
    If Not ObjFSO.FolderExists (TargetPath) Then ObjFSO.CreateFolder (TargetPath)
    Err.clear
    On Error Resume Next
    'Check all files in a folder
    For Each objFile In ObjFolder.files
        If Err.Number <> 0 Then Exit For 'If no permission or no files in folder
        On Error goto 0
        If CheckToCopyFile (objFile.path, TargetPath & "\" & objFile.name) Then 
            objFSO.copyfile objFile.path, TargetPath & "\" & objFile.name, True
        End If
    Next
    'Recurse through all of the subfolders
    On Error Resume Next
    Err.clear
    For Each objSubFolder In ObjFolder.subFolders
        If Err.Number <> 0 Then Exit For 'If no permission or no subfolder in folder
        On Error goto 0
        'For each found subfolder there will be searched for files
        CopyFilesAndFolders ObjSubFolder.Path & "\", TargetPath & ObjSubFolder.name & "\"
    Next
    Set ObjFile = Nothing
    Set ObjSubFolder = Nothing
    Set ObjFolder = Nothing
    Set ObjFSO = Nothing
End Sub

Function CheckToCopyFile(ByVal strSourceFilePath, ByVal strDestFilePath)
    Dim oFSO, oFile, SourceFileModTime, DestFileModTime
    CheckToCopyFile = True
    Set oFSO = CreateObject("scripting.filesystemobject")
    If Not oFSO.FileExists (strDestFilePath) Then Exit Function
    Set oFile = oFSO.GetFile (strSourceFilePath)
    SourceFileModTime = oFile.DateLastModified
    Set oFile = Nothing
    Set oFile = oFSO.GetFile (strDestFilePath)
    DestFileModTime = oFile.DateLastModified
    Set oFile = Nothing
    If SourceFileModTime =< DestFileModTime Then CheckToCopyFile = False
    Set oFSO = Nothing
End Function

我不知道我在哪一行得到错误。

【问题讨论】:

  • 您无法使用 FSO 将文件复制到 Web 服务器。
  • 那我该怎么做呢?
  • 这将向您展示如何在最基本的情况下与 Web 服务器进行交互。您需要知道向服务器发送什么。它通常是一个发布命令。您可以获取 Fiddler telerik.com,它可以让您查看正在发送的内容。您可以在此处使用 vbscript 来执行浏览器正在执行的操作。 stackoverflow.com/questions/40480969/…
  • 目标是 SharePoint 还是常规网络服务器?
  • 是的,目的地是 Sharepoint

标签: vbscript file-copying


【解决方案1】:

在 Windows Vista 和更高版本上,您应该能够 map SharePoint 库使用 WebDAV 驱动字母,如 this blog post 中所述:

Set net = CreateObject("WScript.Network")
net.MapNetworkDrive "X:", "\\sp.example.org@SSL\site\Shared Documents\"

然后使用FileSystemObject 方法将文件复制到映射驱动器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多