使用VBScript的FileSystemObject访问SharePoint文件夹报错800a004c求助
嘿,这个问题我之前帮同事排查过!你遇到的800a004c路径未找到错误,核心原因是FileSystemObject(FSO)根本不支持直接访问HTTP开头的SharePoint网站路径,它只能处理本地文件系统或者SMB网络共享的路径格式。
为什么会报错?
- 你写的相对路径
collab\met\met0025\myFolder会被FSO解析成当前脚本运行目录下的子文件夹,显然这个本地路径不存在; - 完整的SharePoint HTTP地址
http://collab/met/met0025/myFolder不在FSO的支持范围内,它完全识别不了这种Web URL格式。
可行的解决方案
1. 映射SharePoint库为网络驱动器(最简单的方案)
把SharePoint的文档库映射成本地网络驱动器,这样FSO就能像访问本地文件夹一样操作它:
- 打开文件资源管理器,右键「此电脑」→「映射网络驱动器」;
- 在「文件夹」输入框中填入SharePoint库的路径,比如
http://collab/met/met0025/myFolder(部分环境可能需要用\\collab\met\met0025\myFolder这种SMB格式,取决于你的SharePoint配置); - 勾选「登录时重新连接」,完成映射。
之后修改你的VBScript代码,用映射后的驱动器路径访问:
Set oFSO = CreateObject("Scripting.FileSystemObject") folder = "Z:\" ' 替换成你映射的驱动器盘符 Set f = oFSO.GetFolder(folder) Response.Write f.Path
2. 使用SharePoint对象模型(服务器端脚本适用)
如果你的脚本是在SharePoint服务器上运行的ASP页面,可以直接用SharePoint的Server Object Model来操作文件,不需要依赖FSO:
' 初始化SharePoint站点和网站对象 Set site = CreateObject("Microsoft.SharePoint.SPSite")("http://collab") Set web = site.OpenWeb("/met/met0025") ' 获取目标文档库(假设myFolder是文档库名称) Set docLib = web.Lists("myFolder") ' 示例:获取根文件夹并输出路径 Set rootFolder = docLib.RootFolder Response.Write rootFolder.ServerRelativeUrl ' 后续可以用对象模型的方法重命名文件,比如: ' Set file = web.GetFile("/met/met0025/myFolder/oldname.txt") ' file.MoveTo "/met/met0025/myFolder/newname.txt"
注意:这个方法需要脚本运行在SharePoint服务器本地,并且执行脚本的账号有足够的权限。
3. 通过WebDAV路径直接访问(无需映射驱动器)
FSO支持通过WebDAV协议访问SharePoint,只要使用正确的路径格式:
- HTTP环境下,路径格式为
\\collab\DavWWWRoot\met\met0025\myFolder; - HTTPS环境下,格式为
\\collab@SSL\DavWWWRoot\met\met0025\myFolder。
修改代码试试:
Set oFSO = CreateObject("Scripting.FileSystemObject") folder = "\\collab\DavWWWRoot\met\met0025\myFolder" Set f = oFSO.GetFolder(folder) Response.Write f.Path
这个方法需要你的客户端环境支持WebDAV,并且用户有访问该SharePoint库的权限。
内容的提问来源于stack exchange,提问作者Patix80
相关产品推荐
相关产品推荐

