Ftp для загрузки файла по дате

Я использую скрипт.bat для доступа к sftp и файлу загрузки. Папка ftp состоит из большого количества файлов, которые можно однозначно идентифицировать по имени файла в формате YYYYMMDD. например: 20180307.csv, 20180306.csv и т.д. В настоящее время я использую mget для получения всего файла, а затем позже фильтрую его локально. Как я могу изменить скрипт, чтобы получить файл только сегодня?

Это мой.bat-скрипт.

D: CD\myTargetFolder psftp [removed_email]tpserver.com -pw password -b mySftpScript.ftp exit

Это мой сценарий ftp.

cd /myFTPSourceFolder mget *.csv bye

Спасибо.

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 [removed_email]tpserver.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 [removed_email]tpserver.com -pw password -b mySftpScript.ftp
::Del "mySftpScript.ftp"

licensed under cc by-sa 3.0 with attribution.