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

使用WinSCP+任务计划程序SFTP传输时遇"Unknown command"错误

WinSCP脚本执行报错:Unknown command 'directory' 解决方法

问题场景

通过Windows任务计划程序搭配WinSCP实现.xlsx文件的SFTP自动传输,WinSCP能正常启动并完成身份验证,但随即报错断开连接,日志提示Unknown command 'directory'。

错误日志

< 2023-04-03 19:44:36.835 Script: Active session: [1] [redacted]
> 2023-04-03 19:44:36.835 Script: directory of /
< 2023-04-03 19:44:36.835 Script: Unknown command 'directory'.
. 2023-04-03 19:44:36.836 Script: Failed
. 2023-04-03 19:44:36.837 Script: Exit code: 1
. 2023-04-03 19:44:36.837 Closing connection.

任务计划程序启动参数

/script:C:[redacted]Script.txt /log:C:[redacted]Log.txt

现有WinSCP脚本内容

# 使用提供的用户名和密码连接SFTP服务器
open sftp://username:password@[redacted]
# 将指定本地路径中的TB文件上传至根目录/
# -nopreservetime = 忽略WinSCP关于文件时间戳记录的错误
# -resumesupport=off = 禁用文件分段扩展,确保WinSCP完整传输文件
# -delete = 文件发送后清空本地目录,因后续TB文件会替代旧文件
put C:[redacted]\*.xlsx / -nopreservetime -resumesupport=off

问题原因及解决方法

原因分析

日志中出现的directory of /并非你编写的脚本命令,大概率是WinSCP图形界面的残留会话配置导致:比如你之前编辑该SFTP会话时,设置了"连接后自动执行的命令",误写了directory(WinSCP脚本中合法的目录查看命令是ls),或者任务计划调用时触发了图形界面的自动行为。

解决步骤

  1. 清理会话的自动执行命令
    打开WinSCP,找到对应的SFTP会话,右键选择「编辑」,切换到「选项」标签页,检查「连接后」是否存在directory相关命令,删除该命令或替换为ls /。

  2. 优化脚本确保无交互执行
    在脚本开头添加命令关闭交互提示,同时补全注释中提到但未添加的-delete参数,最后添加exit确保脚本执行完成后正常退出:

    option batch on
    option confirm off
    open sftp://username:password@[redacted]
    put C:[redacted]\*.xlsx / -nopreservetime -resumesupport=off -delete
    exit
    
  3. 确认任务计划的执行模式
    确保任务计划中WinSCP的启动参数仅包含/script和/log,不要添加可能触发图形界面的参数,同时执行账户需拥有本地文件访问权限和WinSCP执行权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 00:05:41