WinSCP作为一款广泛使用的开源SFTP、FTP和WebDAV客户端,其命令行功能为高级用户和自动化脚本编写提供了强大支持,通过命令行操作,用户可以高效地完成文件传输、目录管理及远程服务器维护等任务,尤其适合批量处理或集成到自动化工作流中,以下是WinSCP命令使用的详细说明,涵盖基本语法、常用命令及实际应用场景。

WinSCP命令行工具通常通过winscp.com
(控制台模式)或winscp.exe
(图形界面模式下的命令执行)调用,其基本语法结构为:winscp.com [选项] [会话URL] [脚本命令]
,会话URL用于指定连接目标服务器的参数,格式为scp://用户名:密码@主机地址:端口/目录
,而脚本命令则直接定义要执行的操作。winscp.com scp://user:pass@host:22 -command "get /remote/file.txt C:\local"
表示通过SCP协议连接服务器,并下载远程文件到本地指定路径。
在文件传输方面,get
和put
是最核心的命令。get
用于从远程服务器下载文件,支持通配符匹配,如get /remote/*.txt C:\local
可下载所有TXT文件;put
则用于上传本地文件到远程服务器,例如put C:\local\file.txt /remote/
,两者均可通过-filemask
参数过滤文件,如-filemask="| *.csv"
仅处理CSV文件,目录同步功能通过synchronize
命令实现,例如synchronize local C:\local /remote
会将本地目录结构与远程服务器同步,支持双向或单向同步模式。
目录与文件管理命令包括mkdir
(创建远程目录)、rm
(删除文件或目录)、mv
(重命名或移动文件)等。mkdir /remote/newdir
可创建新目录,rm -filemask="*.tmp"
可删除所有临时文件,权限修改通过chmod
命令完成,如chmod 755 /remote/script.sh
为脚本添加执行权限。ls
命令用于列出远程目录内容,支持-filter
参数筛选结果,如ls -filter="*.log"
仅显示日志文件。
对于批量操作,WinSCP支持脚本文件(.txt
或.inc
格式)的调用,例如winscp.com /script=upload.txt
,脚本中可包含多条命令,如:

option batch abort
open scp://user:pass@host
put C:\local\* /remote/
close
exit
上述脚本会自动上传本地所有文件并退出,结合Windows任务计划程序,可实现定时文件同步任务。
以下为常用WinSCP命令的速查表:
命令 | 功能描述 | 示例 |
---|---|---|
get |
下载远程文件 | get /remote/file.txt C:\local |
put |
上传本地文件 | put C:\local\file.txt /remote/ |
synchronize |
同步本地与远程目录 | synchronize remote /remote C:\local |
mkdir |
创建远程目录 | mkdir /remote/newdir |
rm |
删除远程文件或目录 | rm -filemask="*.tmp" |
chmod |
修改文件权限 | chmod 644 /remote/file.txt |
ls |
列出远程目录内容 | ls -filter="*.log" |
在实际应用中,命令行操作需注意安全性,避免在脚本中明文存储密码,建议使用WinSCP的会话管理功能或密钥认证,通过-log
参数可生成操作日志,便于排查问题,如winscp.com /log=C:\winscp.log /command ...
。
相关问答FAQs

-
如何通过WinSCP命令行自动删除远程服务器上的旧文件?
可结合rm
命令和-filemask
参数实现,删除/remote/logs/
目录下30天前的所有日志文件:
winscp.com scp://user:pass@host -command "rm -filemask=*.log -olderfile=30d /remote/logs/"
。
其中-olderfile=30d
表示匹配修改时间早于30天的文件。 -
WinSCP命令行如何支持SFTP协议并指定私钥认证?
在会话URL中添加privatekeykeyfile
参数即可。
winscp.com sftp://user@host -privatekeyfile=C:\keys\id_rsa -command "put C:\local\file.txt /remote/"
。
需确保私钥文件(如id_rsa
)已正确配置,且远程服务器 authorized_keys 中包含对应的公钥。