Как загрузить последний измененный файл с удаленного сервера на локальный с помощью пакетного файла 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

Как я могу динамически получить весь последний измененный файл.


person Ashique Sheikh    schedule 25.04.2016    source источник
comment
Существует хорошее описание того, как сделать это с помощью команд UNIX/Linux, по адресу superuser.com/questions/524974/ Если вы можете установить cygwin.com, вероятно, это сработает.   -  person lit    schedule 26.04.2016
comment
Если вам разрешено установить PuTTY, то вам, вероятно, разрешено установить WinSCP.   -  person lit    schedule 26.04.2016


Ответы (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%

См. Как получить текущую дату и время в командной строке Windows в подходящем формате для использования в имени файла?


Или используйте более мощный клиент SFTP/SCP.

Например, с помощью сценариев WinSCP вы можете сделать следующее:

"C:\Program Files (x86)\WinSCP\WinSCP.com" /command ^
    "open sftp://abc:password@****.na.ab.com/ -hostkey=""ssh-rsa 2048 xxxxxxxxxxx...=""" ^
    "get /qwe/asd/tryu/%%TIMESTAMP#yyyymmdd%%*.csv.zip ""P:\Projects\abc\Test_bacth\Batch download\""" ^
    "exit"

См. документацию по синтаксису %TIMESTAMP%.


Если временная метка на самом деле не является сегодняшней, вместо указания временной метки просто загрузите последний файл для каждого шаблона/маски.

С WinSCP это легко сделать, просто используйте переключатель -latest:

"C:\Program Files (x86)\WinSCP\WinSCP.com" /command ^
    "open sftp://abc:password@****.na.ab.com/ -hostkey=""ssh-rsa 2048 xxxxxxxxxxx...=""" ^
    "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)

person Martin Prikryl    schedule 25.04.2016
comment
Это работает в моей системе. получить /qwe/asd/tryu/%%TIMESTAMP#yyyymmdd%%*.csv.zip. Но есть идеи, как вычесть из него 1 день. - person Ashique Sheikh; 26.04.2016
comment
Исправлено 4 файла. Которые имеют шаблон имени, например 04262016abc,04262016def,04262016ghi,04262016jkl. - person Ashique Sheikh; 26.04.2016
comment
нет. это как отметка времени дня, например 04242016173153_cpg_aob_detail.csv, второй файл, например 04242016173655_fmcg_cob_detail.csv. - person Ashique Sheikh; 26.04.2016
comment
Но у него есть и другие папки с датами, такие как 04172016173153_cpg_aob_detail.csv и 04112016173655_fmcg_cob_detail.csv и т. д. - person Ashique Sheikh; 26.04.2016
comment
Это остановилось здесь... Аутентифицировано. Запуск сеанса... Сеанс запущен. Активный сеанс: [1] abc@****.na.ab.com P:\Projects\abc\Test_bacth\Batch_download /qwe/asd/tryu winscp› - person Ashique Sheikh; 26.04.2016
comment
Ошибка: - Неизвестный переключатель «последний». - person Ashique Sheikh; 26.04.2016
comment
Спасибо . Большое спасибо, это работает. есть еще 2 запроса, первый - как передать ему пароль, а второй - можем ли мы распаковать все 4 папки в определенной папке. Спасибо еще раз - person Ashique Sheikh; 26.04.2016
comment
Пароль: см. мой отредактированный ответ. Разархивировать: Не вижу, как это связано. Вероятно, вам следует задать новый вопрос. - person Martin Prikryl; 26.04.2016
comment
stackoverflow .com/questions/36865582/ - person Ashique Sheikh; 26.04.2016
comment
Как я могу запустить этот код, если в нем есть место. См. Путь к файлу загрузки C:\Program Files (x86)\WinSCP\WinSCP.com/command ^ open sftp://abc:password@****.na .ab.com/ -hostkey=ssh-dss 1024 xx:xx:xx:... ^ lcd \\fastrg01\Olg\DFF abc(25-kml-0234)\VM\ZIP_INPUT ^ cd /qwe/asd/tryu ^ get -latest *_cpg_aob_detail.csv.zip ^ get -latest *_fmcg_cob_detail.csv.zip ^ ... выход - person Ashique Sheikh; 29.04.2016
comment
Так же, как и с пробелом в -hostkey, заключите путь в двойные двойные кавычки. Смотрите мой обновленный ответ. А также winscp.net/eng/docs/commandline#syntax - person Martin Prikryl; 29.04.2016
comment
Привет Мартин Застрял снова. На этой неделе клиент не поместил файл по этому пути, поэтому он принял файл за последнюю неделю как последний. Можем ли мы сделать его динамическим, чтобы он мог выбирать только последний файл даты понедельника. шаблон для даты понедельника похож на 06262016173113_cpg_aob_detail.csv.zip и 06262016173113_fmcg_cob_detail.csv.zip. Можем ли мы сделать что-то из этого. - person Ashique Sheikh; 30.06.2016
comment
Это не дискуссионный форум. Если у вас есть вопрос, задайте его. - person Martin Prikryl; 30.06.2016