如何通过Windows终端(CMD)从同步的SharePoint目录下载文件?
问题描述
我已通过OneDrive将SharePoint目录同步至Windows文件系统,部分文件已本地可用,其余仅存于云端。双击云端文件可自动下载,但我希望通过终端(CMD)编程实现该操作。
已尝试步骤
- 导航至文件所在目录:
cd "C:\Users\MyUsername\OneDrive\Documents" - 使用
attrib命令尝试让文件本地可用:
执行后无输出,文件仍仅存于云端。attrib -P +U my_file.iso - 尝试不带扩展名执行命令:
结果报错:attrib -P +U my_fileCould not find that file.
需求
无需手动双击,通过编程触发指定文件(如my_file.iso)从同步的SharePoint目录下载至本地。
补充信息
- 目录通过OneDrive同步
- 文件资源管理器中双击文件可成功下载
- 已确认文件名及路径完全正确
已尝试操作
- 对目标文件执行
attrib -P +U命令 - 使用
dir命令确认文件存在于目标目录中
解决方法
方法1:用系统自带的odopen.exe触发下载
Windows自带的OneDrive命令行工具odopen.exe可以直接模拟双击文件的行为,触发云端文件下载到本地,命令格式如下:
odopen.exe "C:\Users\MyUsername\OneDrive\Documents\my_file.iso"
执行后会自动启动下载,无需额外操作。
方法2:PowerShell命令触发同步
如果需要通过脚本批量处理,可使用PowerShell的文件读取/写入命令触发下载,在CMD中也可以直接调用:
# 读取文件内容触发下载(不会修改文件) Get-Content "C:\Users\MyUsername\OneDrive\Documents\my_file.iso" -ErrorAction SilentlyContinue
或者用追加空内容的方式触发同步:
Set-Content "C:\Users\MyUsername\OneDrive\Documents\my_file.iso" -Value $null -Append -ErrorAction SilentlyContinue
方法3:OneDrive Graph API(适合开发场景)
如果需要精细化控制下载逻辑,可调用OneDrive的Graph API,通过PUT请求主动拉取文件。示例用curl命令:
curl -X PUT "https://graph.microsoft.com/v1.0/me/drive/items/{文件ID}/content" -H "Authorization: Bearer {认证令牌}" -o "C:\本地路径\my_file.iso"
注意:需要替换{文件ID}和{认证令牌}为实际值,适合批量下载或集成到程序中。
说明:为什么attrib命令无效?
attrib -P +U是旧版OneDrive的同步命令,新版OneDrive(尤其是同步SharePoint站点的场景)已改用新的文件属性标记机制,因此该命令不再生效。
内容的提问来源于stack exchange,提问作者tail
相关产品推荐
相关产品推荐

