如何从FTP下载今天和昨天的新数据?

我想从昨天和今天的variables名称文件从我的FTP下载更新的数据,像这样的结构文件

Daily_(市)_(年月日)的.xlsx

我已经试过这个代码

daily.bat

winscp.exe /console /script=daily.txt 

daily.txt

 ::: Begin set date for /f "tokens=1-4 delims=/-. " %%i in ('date /t') do (call :set_date %%i %%j %%k %%l) goto :end_set_date :set_date if "%1:~0,1%" gtr "9" shift for /f "skip=1 tokens=2-4 delims=(-)" %%m in ('echo,^|date') do (set %%m=%1&set %%n=%2&set %%o=%3) goto :eof :end_set_date ::: End set date set /a today=%dd% set /a yesterday=%dd%-1 @echo off open Reg_8@192.168.8.1 get -neweronly "/Reg8/Kota/2016/Daily/Daily_Makassar_%yy%%mm%%today%.xlsx" "D:\FTP\Makassar\2016\daily" get -neweronly "/Reg8/Kota/2016/Daily/Daily_Makassar_%yy%%mm%%yesterday%.xlsx" "D:\FTP\Makassar\2016\daily" pause 

如果我运行这个脚本不会发生…

您将Windows和WinSCP命令组合在一个文件中。 这是不可能的。 首先阅读指南以自动从FTP服务器或SFTP服务器进行文件传输 。

而且你的脚本太复杂了,因为你没有使用WinSCP %TIMESTAMP%语法 。


一个简单的方法( daily.txt ):

 open ftp://user:mypassword@ftp.example.com/ get -neweronly "/Reg8/Kota/2016/Daily/Daily_Makassar_%TIMESTAMP#yyyymmdd%.xlsx" "D:\FTP\Makassar\2016\daily" get -neweronly "/Reg8/Kota/2016/Daily/Daily_Makassar_%TIMESTAMP-1D#yyyymmdd%.xlsx" "D:\FTP\Makassar\2016\daily" 

(只有这个,放弃你的daily.txt所有其他代码)

%TIMESTAMP#yyyymmdd%将解析为20161006
%TIMESTAMP-1D#yyyymmdd%将解析为20161005 (截至2016-10-06)。

你需要WinSCP 5.9和更新的这个。


另外一般情况下,您应该从批处理文件调用winscp.com ,而不是winscp.exe /console