【问题标题】:How to download newer data today and yesterday from FTP?如何从 FTP 下载今天和昨天更新的数据?
【发布时间】:2017-02-14 18:56:28
【问题描述】:

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

每日_(城市)_(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\Makassar\2016\daily"
get -neweronly "/Reg8/Kota/2016/Daily/Daily_Makassar_%yy%%mm%%yesterday%.xlsx" "D:\FTP\Makassar\2016\daily"
pause

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

【问题讨论】:

    标签: windows batch-file ftp winscp


    【解决方案1】:

    您将 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\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 月 6 日)。

    为此,您需要 WinSCP 5.9 和更新版本。


    通常,您应该从批处理文件中调用winscp.com,而不是winscp.exe /console

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-28
      • 1970-01-01
      • 1970-01-01
      • 2021-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多