This is an old revision of the document!
Uploading a list of files
Using WinSCP .NET Assembly
Use WinSCP .NET assembly from your favorite language.
Advertisement
If you do not have your favorite language, use PowerShell:
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) $remotePath = "/home/user/" $lines = Get-Content "list.txt" foreach ($line in $lines) { Write-Host ("Uploading {0} ..." -f $line) $session.PutFiles($line, $remotePath).Check() } } finally { # Disconnect, clean up $session.Dispose() } exit 0 } catch [Exception] { Write-Host $_.Exception.Message exit 1 }
Advertisement
Using WinSCP Scripting
You may use following batch file that calls WinSCP script:
@echo off set SESSION=sftp://user:password@example.com/ set REMOTE_PATH=/home/user/ echo option batch abort > script.tmp echo option confirm off >> script.tmp echo open %SESSION% >> script.tmp rem Generate "put" command for each line in list file for /F %%i in (list.txt) do echo put "%%i" "%REMOTE_PATH%" >> script.tmp echo exit >> script.tmp winscp.com /script=script.tmp set RESULT=%ERRORLEVEL% del script.tmp rem Propagating WinSCP exit code exit %RESULT%