为什么我收到Path Not Found错误?

时间:2016-08-05 00:13:40

标签: vbscript filesystemobject

我在第2行到最后一行找不到路径(fso.CopyFile)。

FullFileLocationFrom = (see below)
ActualDBFileName = (see below)  
NoNameFileLocationTo = GetDocumentRoot & "\temp\" & TempFileGUID
FullFileLocationTo = NoNameFileLocationTo & "\" & ActualDBFileName

If Not fso.FolderExists (NoNameFileLocationTo) Then 
    CreateFolderPath NoNameFileLocationTo
End If

If fso.FileExists (FullFileLocationFrom) Then
    fso.CopyFile FullFileLocationFrom, FullFileLocationTo, True 'This line gives PathNotFound error
End If

这是ActualDBFileName的值:

  

Orignal - 重新设计 - 使用分区 - 结果清晰 - 重新组 - 房间注册 - 更改G-R2窗口大小(Arcola Street,E7 - 3)_ROL - TEST.xls

这是FullFileLocationFrom:

的值
  

E:\ Hello \ Work \ P \ Pavledes \ Court REVIEW - ROL - 15-21& 27 Arcola St \ MODEL \ Orignal - 重新设计 - 使用分区 - 结果清晰 - 重组 - 房间注册 - 更改G-R2窗口大小(Arcola Street,E7 - 3)_ROL - TEST.xls

这是FullFileLocationTo的值:

  

E:\ inetpub \ vhosts \ HEllo.com \ subdomains \ admin \ httpdocs \ Documents \ temp {0ABF2698-6F8B-4A73-9E5A-D6FD9E9E0708} \ Orignal - Redesign - With Partition - Clear Results - Re Group - Rooms registered - 更改G-R2窗口大小(Arcola Street,E7 - 3)_ROL - TEST.xls

我已经在不同的论坛上查看了不同的stackoverflow问题,但还没有解决方案解决了我的问题。

3 个答案:

答案 0 :(得分:2)

错误是因为FullFileLocationTo:路径名是268个字符,但Windows API限制是260个字符,这导致“找不到路径”异常,因为它无法创建指定的路径。

答案 1 :(得分:0)

  
      
  • 不要在目录名或文件名中使用以下字符,   因为它们是保留的:
  •   
     

\\.\

来自https://msdn.microsoft.com/en-au/library/windows/desktop/aa365247(v=vs.85).aspx

这些是窗口规则,即规则窗口的程序如下。底层文件系统可以存储任何支持任何操作系统所需的字符。但是,如果不遵守窗口规则,Windows功能就会出现问题。

有时您可以使用\\.\C:\autoexec.batvar handlingController = this.ViewContext.RouteData.Values["controller"].ToString(); )为文件名添加前缀。如果程序只是将它传递给Window的API函数,那么它将禁止文件名检查。

答案 2 :(得分:0)

我认为@ravp是正确的。这是Windows中的一个已知限制:

  

标准文件名必须少于260个字符,目录名必须少于248个字符。

请注意以下事项: https://social.technet.microsoft.com/Forums/scriptcenter/en-US/266e0699-ea5b-4dee-8c96-30d021709772/filesystemobject-and-long-names-no-error-shown?forum=ITCG