如何在WinSCP自动化脚本中跳过凭据输入提示?
问题描述
刚接触WinSCP和Windows任务计划程序,要实现连接外部FTP服务器并将内容复制到本地目录的自动化任务。运行计划任务时,WinSCP会弹出凭据输入提示:按回车提交空内容能正常完成文件复制,但无交互时会超时失败。希望完全自动化,取消凭据输入步骤,询问是否可通过脚本实现,相关配置如下:
相关配置
Windows任务计划程序触发动作
- 动作:启动程序
- 程序/脚本:
C:\Users\furmand1\AppData\Local\Programs\WinSCP\WinSCP.com - 添加参数:
/log="C:\Users\furmand1\Desktop\Log\winscp.log" /script="C:\Users\furmand1\Desktop\Script\Script.txt"
原WinSCP脚本
# Connect open 10.201.47.178 # Change directory lcd C:\Users\furmand1\Desktop\FTP # Download file to the local directory mget *.* # Disconnect close # Exit WinSCP exit
无交互时日志关键片段
. 2024-06-24 16:27:59.701 Username prompt (no username provided) < 2024-06-24 16:27:59.701 Script: Prompting for credentials... < 2024-06-24 16:28:52.057 Script: Connecting to 10.201.47.178 ... ... < 2024-06-24 16:28:52.111 Script: Terminated by user. . 2024-06-24 16:28:52.111 Script: Exit code: 1
解决方案
可以通过修改WinSCP脚本或启动参数实现自动化,核心是明确指定登录凭据(或空凭据)并禁用交互提示,以下两种方法任选:
方法1:在open命令中指定空用户名
由于你的FTP服务器接受空用户名登录,直接在open命令里显式指定空用户名,避免WinSCP弹出提示:
修改后的脚本:
# Connect with empty username open ftp://@10.201.47.178 # Change directory lcd C:\Users\furmand1\Desktop\FTP # Download file to the local directory mget *.* # Disconnect close # Exit WinSCP exit
解释:ftp://@10.201.47.178格式中,@前为空,代表使用空用户名登录,WinSCP会直接发送空的USER命令,无需交互。
方法2:添加无交互参数强制跳过提示
如果方法1不生效,可在WinSCP启动参数中添加/ini=nul和/noprompt,强制禁用配置读取和交互提示:
修改任务计划的参数
将原参数修改为:
/ini=nul /noprompt /log="C:\Users\furmand1\Desktop\Log\winscp.log" /script="C:\Users\furmand1\Desktop\Script\Script.txt"
脚本配合方法1的修改版
/ini=nul让WinSCP不读取本地配置,避免默认设置干扰;/noprompt强制不弹出任何交互提示,确保任务在后台自动运行。
验证
修改后手动运行任务计划中的任务,查看日志是否无Prompting for credentials...记录,且文件正常下载即可。
内容的提问来源于stack exchange,提问作者Fire7665
相关产品推荐
相关产品推荐

