如何从 FTP 下载今天和昨天的较新数据?
How to download newer data today and yesterday from FTP?
我想从我的 FTP 文件中下载较新的数据,其中包含昨天和今天的变量,结构文件如下
Daily_(City)_(yyyymmdd).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\Makassar16\daily"
get -neweronly "/Reg8/Kota/2016/Daily/Daily_Makassar_%yy%%mm%%yesterday%.xlsx" "D:\FTP\Makassar16\daily"
pause
如果我运行这个脚本不会发生...
您正在将 Windows 和 WinSCP 命令合并到一个文件中。那是不可能的。从阅读 guide to automating file transfers from FTP server or SFTP server.
开始
而且你的脚本太复杂了,因为你没有利用WinSCP %TIMESTAMP%
syntax。
一个简单的方法(daily.txt
):
open ftp://user:mypassword@ftp.example.com/
get -neweronly "/Reg8/Kota/2016/Daily/Daily_Makassar_%TIMESTAMP#yyyymmdd%.xlsx" "D:\FTP\Makassar16\daily"
get -neweronly "/Reg8/Kota/2016/Daily/Daily_Makassar_%TIMESTAMP-1D#yyyymmdd%.xlsx" "D:\FTP\Makassar16\daily"
(只有这个,丢弃您 daily.txt
中的所有其他代码)
%TIMESTAMP#yyyymmdd%
将解析为 20161006
。
%TIMESTAMP-1D#yyyymmdd%
将解析为 20161005
(截至 2016 年 10 月 6 日)。
为此您需要 WinSCP 5.9 及更新版本。
一般来说,您应该从批处理文件中调用 winscp.com
,而不是 winscp.exe /console
。
我想从我的 FTP 文件中下载较新的数据,其中包含昨天和今天的变量,结构文件如下
Daily_(City)_(yyyymmdd).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\Makassar16\daily"
get -neweronly "/Reg8/Kota/2016/Daily/Daily_Makassar_%yy%%mm%%yesterday%.xlsx" "D:\FTP\Makassar16\daily"
pause
如果我运行这个脚本不会发生...
您正在将 Windows 和 WinSCP 命令合并到一个文件中。那是不可能的。从阅读 guide to automating file transfers from FTP server or SFTP server.
开始而且你的脚本太复杂了,因为你没有利用WinSCP %TIMESTAMP%
syntax。
一个简单的方法(daily.txt
):
open ftp://user:mypassword@ftp.example.com/
get -neweronly "/Reg8/Kota/2016/Daily/Daily_Makassar_%TIMESTAMP#yyyymmdd%.xlsx" "D:\FTP\Makassar16\daily"
get -neweronly "/Reg8/Kota/2016/Daily/Daily_Makassar_%TIMESTAMP-1D#yyyymmdd%.xlsx" "D:\FTP\Makassar16\daily"
(只有这个,丢弃您 daily.txt
中的所有其他代码)
%TIMESTAMP#yyyymmdd%
将解析为 20161006
。
%TIMESTAMP-1D#yyyymmdd%
将解析为 20161005
(截至 2016 年 10 月 6 日)。
为此您需要 WinSCP 5.9 及更新版本。
一般来说,您应该从批处理文件中调用 winscp.com
,而不是 winscp.exe /console
。