如何使用WinSCP下载较新的文件并将其保存到两个本地文件夹?

时间:2016-12-08 06:40:30

标签: batch-file cmd ftp winscp

我有一个文件夹(ftp_region),其内容与我的FTP中的数据类似。

如何从我的FTP下载较新的文件并将其保存到两个本地文件夹(ftp_region和其他文件夹)

现在,我用这个:

open "my ftp address"
get -neweronly "..." "..."

1 个答案:

答案 0 :(得分:2)

使用简单的WinSCP脚本无法做到这一点。

您最好使用WinSCP .NET assembly。它允许您处理下载的文件。

PowerShell中的示例代码:

# Load WinSCP .NET assembly
Add-Type -Path "WinSCPnet.dll"

# Setup session options
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
    Protocol = [WinSCP.Protocol]::Ftp
    HostName = "ftp.example.com"
    UserName = "user"
    Password = "password"
}

Write-Host "Connecting..."
$session = New-Object WinSCP.Session
# $session.SessionLogPath = "C:\path\to\log\sync.log"
$session.Open($sessionOptions)

$remotePath = "/remote/path"
$localPathPrimary = "C:\backup\primary"
$localPathSecondary = "C:\backup\secondary"

Write-Host "Synchronizing..."
$result =
    $session.SynchronizeDirectories(
        [WinSCP.SynchronizationMode]::Local, $localPathPrimary, $remotePath, $False)
$result.Check()

Write-Host "Copying downloaded files to secondary backup..."
foreach ($download in $result.Downloads)
{
    $filename = (Split-Path -Leaf $download.Destination)
    $localFilePathSecondary = (Join-Path $localPathSecondary $filename)
    Copy-Item $download.Destination $localFilePathSecondary
    Write-Host "File $filename archived to both folders."
}

该代码基于官方示例Deleting remote files after successful remote to local synchronization