ftp命令按日期下载文件

时间:2018-03-07 02:40:42

标签: batch-file ftp sftp

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

谢谢。

1 个答案:

答案 0 :(得分: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"