我使用.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
谢谢。
答案 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"