我方自动通过sftp的方式去拉取

时间:2022-06-25 06:28:02

缘起一个BA与客户交流的软件。但因为数据不能通过系统直连的方法进行获取。

对方只供给每天一份全量数据到指定文件夹下,我方自动通过sftp的方法去拉取。

一个只有简单几行的操纵,想必必定是不成能需写措施去实现的吧。

第一时间就想到了windows的按时任务去执行一个脚本就好。

找来找去,网上一堆的ftp脚本。sftp的少得可怜。

后面找到了此文:https://www.cnblogs.com/binw/p/4065607.html

但因为不懂winscp。里面的代码也不大懂。

折腾一天后,发明putty可以sftp,

写出了以下脚本

psftp -P 2122 [email protected] -pw awUV2kCU cd /upload_ba lcd D:\xhx_ba_csv mget *.csv

但有一个问题,执行第一行后就进入psftp措施了,并没有再执行下面的代码。

后来又只能返回去看winscp了,折腾一两小时后,,终于告成了。

CD /d D:\WinSCP #界说要获取的文件名 set filename=T_sulwba_%date:~0,4%%date:~5,2%%date:~8,2% #通过winscp直接带参数的方法自动获取文件 winscp.exe /console /command "option batch continue" "option confirm off" "open sftp://<username>:<pwd>@<ip>:<port>" "option transfer binary" "get /upload_ba/%filename%.csv D:\xhx_ba_csv\upload_ba\" "exit"

最后,在windows的打算任务中设定每日自动此bat文件即可。

附:windows下日期格局

1.获取日期

格局:  %date%

功效:  2012-07-31

2.获取时间

格局:  %time%

功效:  10:21:21.68


3.获取日期和时间

格局:   %date:~x,y%以及%time:~x,y%

说明:   x是开始位置,y是取得字符数


好比说我要获取完整的日期和时间,

格局:   %date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%

功效:   20120731111039