Как загрузить последний измененный файл с удаленного сервера на локальный, используя пакетный файл PuTTY
У меня есть вопрос, касающийся пакетного файла замазки. Это мое .bat
файл:
C:
cd Program Files (x86)\PuTTY
pscp -2 -v -pw khair1 -sftp abc@****.na.ab.com:/qwe/asd/tryu/*.csv.zip P:\Projects\abc\Test_bacth\Batch_download
pause"
Таким образом, каждую неделю я должен дать имя файла, как /qwe/asd/tryu/**04242016***.csv.zip
Как я могу динамически получить все файлы, которые были изменены в последний раз.
1 ответ
Вы можете использовать эти команды для создания сегодняшнего штампа:
for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set LDT=%%j
set STAMP=%LDT:~0,4%%LDT:~4,2%%LDT:~6,2%
echo %STAMP%
Или используйте более мощный SFTP/SCP-клиент.
Например, с помощью сценариев WinSCP вы можете сделать:
"C:\Program Files (x86)\WinSCP\WinSCP.com" /command ^
"open sftp://abc:password@****.na.ab.com/ -hostkey=""ssh-dss 1024 xx:xx:xx:...""" ^
"get /qwe/asd/tryu/%%TIMESTAMP#yyyymmdd%%*.csv.zip ""P:\Projects\abc\Test_bacth\Batch download\""" ^
"exit"
Смотрите документацию для %TIMESTAMP%
синтаксис
Если временная метка на самом деле не сегодняшняя, вместо указания временной метки просто загрузите последний файл для каждого шаблона / маски.
Это легко с WinSCP 5.8 и более поздними версиями (в настоящее время бета), просто используйте -latest
переключатель:
"C:\Program Files (x86)\WinSCP\WinSCP.com" /command ^
"open sftp://abc:password@****.na.ab.com/ -hostkey=""ssh-dss 1024 xx:xx:xx:...""" ^
"lcd ""P:\Projects\abc\Test_bacth\Batch download""" ^
"cd /qwe/asd/tryu" ^
"get -latest *_cpg_aob_detail.csv.zip" ^
"get -latest *_fmcg_cob_detail.csv.zip" ^
...
"exit"
Смотрите также другие варианты загрузки самых последних файлов.
(Я автор WinSCP)