Duke Yin's Technology database

WinSCP典型批处理脚本

使用WinSCP有一个技巧是,可以把FTP动作存为一个脚本,日后如果需要重复这个FTP操作,就只需要运行脚本就可以。

如果我们可以自己写脚本,那就很方便了。

例如,我要把本地文件夹 c:\files\abcd 文件夹上传到两个服务器,

  • 服务器1,firstserver.com目标为 /docker/file/abcd/
  • 服务器2,secondserver.com目标为 /www/file/abcd/

并且

  • 只上传新的修改过的,文件一致就跳过(-neweronly),
  • 不上传隐藏文件(ExcludeHiddenFiles=1),
  • 不上传.git .gitattributes等git配置文件(-filemask=””| .gitattributes; .git/””),

那么脚本就可以这么写:

@echo off

"C:\Program Files (x86)\WinSCP\WinSCP.com" ^
  /log="D:\WinSCP.log" /ini=nul ^
  /command ^
    "open ftp://user1:PassWord@firstserver.com/ -rawsettings Utf=1 ProxyPort=0" ^
    "lcd c:\files" ^
    "cd /docker/file/" ^
    "put -filemask=""| .gitattributes; .git/"" -neweronly -rawtransfersettings[1] ExcludeHiddenFiles=1 abcd" ^
    "open ftp://user2:PassWord@secondserver.com -rawsettings Utf=1 ProxyPort=0" ^
    "lcd c:\files" ^
    "cd /www/file/" ^
    "put -filemask=""| .gitattributes; .git/"" -neweronly -rawtransfersettings[1] ExcludeHiddenFiles=1 abcd" ^
    "exit"

set WINSCP_RESULT=%ERRORLEVEL%
if %WINSCP_RESULT% equ 0 (
  echo Success
) else (
  echo Error
)

exit /b %WINSCP_RESULT%

日后修改了文件,运行脚本就可以上传,不需要再一个个找文件夹。

从open命令开始,到put结束,为一个服务器,如果有更多台服务器,可以直接接着put行再循环写。

D:/WinSCP.log 是设置日志文件,方便运行结束后查看。

# #

发布评论

评论

标注 * 的为必填项。