ftp 按日期下载文件的命令

ftp command to download file by date

我正在使用 .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

谢谢。

如果您不介意动态创建 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"