You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何引用WinSCP脚本所在目录实现文件下载?VBA调用场景下lcd路径失效问题求助

解决VBA调用WinSCP脚本时本地目录路径错误的问题

我来帮你搞定这个问题——核心问题出在你用%CD%获取的是当前工作目录,而不是脚本本身所在的目录。当VBA调用批处理脚本时,当前工作目录往往不是你存放脚本的SharePoint同步文件夹,这就导致WinSCP无法把文件下载到正确的位置。

解决方案:用%~dp0获取脚本所在目录

批处理有个内置变量%~dp0,它会返回脚本文件本身所在的完整路径(包含驱动器号和末尾的反斜杠),不管脚本是从哪个路径被调用的,都能精准指向它自己的存放位置,完美适配你这种不同用户SharePoint同步路径有差异的场景。

调整后的完整脚本代码

把原来的lcd ""%CD%"""替换成lcd ""%~dp0"""即可,其余代码保持不变:

@echo off
"C:\Program Files (x86)\WinSCP\WinSCP.com" ^
/command ^
"open sftp://mysite.gov/ -hostkey=""ssh-rsa 4096 key#######=""" ^
"cd /" ^
"lcd ""%~dp0""" ^
"get File1.TXT" ^
"get File2.csv" ^
"get File3.csv" ^
"exit"
timeout 10
exit

额外说明

  • %~dp0会自动处理路径中的空格,所以不需要额外手动加引号(不过WinSCP的lcd命令要求路径用双引号包裹,脚本里的""%~dp0"""是批处理中对双引号的转义写法,确保WinSCP能正确识别路径)。
  • 这个方案完全适配SharePoint同步文件夹的场景,不管不同用户的同步路径是%USERPROFILE%\User-Path\FTP\还是%USERPROFILE%\UserPath-FTP\FTP,%~dp0都会自动指向脚本所在的那个FTP文件夹。

内容的提问来源于stack exchange,提问作者Kyle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 21:32:37