【问题标题】:ftp command to download file by dateftp 命令按日期下载文件
【发布时间】:2018-03-07 02:40:41
【问题描述】:

我正在使用 .bat 脚本来访问 sftp 并下载文件。 ftp 文件夹由很多文件组成,这些文件可以通过 YYYYMMDD 格式的文件名来唯一标识。例如:20180307.csv、20180306.csv 等。目前我正在使用 mget 获取所有文件,然后稍后在本地过滤它。如何修改脚本以仅在今天获取文件?

这是我的 .bat 脚本。

    D:
    CD\myTargetFolder
    psftp user@sftp.myftpserver.com -pw password -b mySftpScript.ftp
    exit

这是我的 ftp 脚本。

    cd /myFTPSourceFolder
    mget *.csv
    bye

谢谢。

【问题讨论】:

    标签: batch-file ftp sftp


    【解决方案1】:

    如果您不介意动态创建 ftp 脚本,那么您的 .bat 脚本可能如下所示:

    @Echo Off
    CD /D D:\myTargetFolder 2>Nul || Exit /B
    Set "csv="
    For /F "Tokens=1-3 Delims=/ " %%A In ('RoboCopy /NJH /L "\|" Null'
    ) Do If Not Defined csv Set "csv=%%A%%B%%C.csv"
    (   Echo cd /myFTPSourceFolder
        Echo mget %csv%
        Echo bye)>"mySftpScript.ftp"
    psftp user@sftp.myftpserver.com -pw password -b mySftpScript.ftp
    ::Del "mySftpScript.ftp"
    

    我已将最后一行注释掉,如果您想删除动态创建的 ftp 脚本,请从其中删除 ::

    编辑

    要获取昨天的日期 csv,那么我的建议是利用 PowerShell

    @Echo Off
    CD /D D:\myTargetFolder 2>Nul || Exit /B
    Set "csv="
    For /F UseBackQ %%A In (
        `PowerShell "(Get-Date).AddDays(-1).ToString('yyyMMdd')"`
    ) Do Set "csv=%%A.csv"
    (   Echo cd /myFTPSourceFolder
        Echo mget %csv%
        Echo bye)>"mySftpScript.ftp"
    psftp user@sftp.myftpserver.com -pw password -b mySftpScript.ftp
    ::Del "mySftpScript.ftp"
    

    【讨论】:

    • 嗨。如何修改它以获取昨天的日期 csv?
    • 我已在我的答案中添加了一个编辑,以满足您的新要求。 但是请注意,这个新请求在技术上是一个新问题,因此应该作为一个问题发布。
    猜你喜欢
    • 1970-01-01
    • 2017-04-14
    • 2020-02-05
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多