This is an old revision of the document!
Moving local files to different location after successful upload
Using WinSCP .NET Assembly
The following example uses WinSCP .NET assembly from a PowerShell script. If you have another preferred language, you can easily translate it.
Advertisement
param ( $localPath = "C:\upload\*", $remotePath = "/home/user/", $backupPath = "C:\backup\" ) try { # Load WinSCP .NET assembly Add-Type -Path "WinSCPnet.dll" # Setup session options $sessionOptions = New-Object WinSCP.SessionOptions $sessionOptions.Protocol = [WinSCP.Protocol]::Sftp $sessionOptions.HostName = "example.com" $sessionOptions.UserName = "user" $sessionOptions.Password = "mypassword" $sessionOptions.SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx" $session = New-Object WinSCP.Session try { # Connect $session.Open($sessionOptions) # Upload files, collect results $transferResult = $session.PutFiles($localPath, $remotePath) # Iterate over every transfer foreach ($transfer in $transferResult.Transfers) { # Success or error? if ($transfer.Error -eq $Null) { Write-Host ("Upload of {0} succeeded, moving to backup" -f $transfer.FileName) # Upload succeeded, move source file to backup Move-Item $transfer.FileName $backupPath } else { Write-Host ("Upload of {0} failed: {1}" -f $transfer.FileName, $transfer.Error.Message) } } } finally { # Disconnect, clean up $session.Dispose() } exit 0 } catch [Exception] { Write-Host $_.Exception.Message exit 1 }
Advertisement
Using WinSCP Scripting
WinSCP scripting does not support move command for local files. Instead you can combine WinSCP script with batch file:
# Connect open mysession # Upload the files put *.* exit
Launch the above script from batch file like the one below:
winscp.com /script=example.txt if %ERRORLEVEL% neq 0 goto error echo Upload succeeded, moving local files move *.* c:\backup\ exit 0 :error echo Upload failed, keeping local files exit 1