Загрузите самый последний файл определенного шаблона имени файла с сервера SFTP, используя WinSCP в PowerShell - PullRequest
2 голосов
/ 20 июня 2019

Мне нужно скопировать самый последний файл с маской файла FileName_A_* из SFTP-местоположения и поместить их в sharedrive.

Я пытался использовать WinSCP. Я создал файл Mostrecent.txt с кодом ниже и поместил его в C:\Program Files (x86)\WinSCP. Другой пакетный файл Mostrecent.bat для выполнения скрипта из HourlyFile.txt

Mostrecent.txt

option batch abort
option confirm off
open sftp..........
$source = '/outbound/test'
$destination = '\\sharedrive\'
@(Get-ChildItem $source -Filter FileName_A_* | Sort LastWriteTime -Descending)[0] | % { Copy-Item -path $_.FullName -destination -force} 
exit

Mostrecent.txt

option batch abort
option confirm off
open sftp..........
$dir= '/outbound/test/FileName_A_*'
get  Dir | select -last 1 \\sharedrive
exit

Местоположение SFTP будет содержать разные файлы с разными именами и расширениями. Мне нужно просто скопировать самый последний файл с шаблоном файла FileName_A_*. Имя файла будет:

FileName_A_20190619100000.txt
FileName_A_20190619110007.txt
FileName_A_20190619120040.txt
FileName_A_20190619130100.txt

1 Ответ

2 голосов
/ 20 июня 2019

Вы не можете использовать конструкции PowerShell в сценарии WinSCP.

WinSCP имеет встроенную функциональность для загрузки последнего файла: переключатель -latest команды get .

Таким образом, ваш Mostrecent.txt файл может быть:

option batch abort
option confirm off
open sftp://..........
get -latest /outbound/test/FileName_A_* \\sharedrive\
exit

См. Также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...