Differences

This shows you the differences between the selected revisions of the page.

script_download_files_to_same_folder 2017-05-15 script_download_files_to_same_folder 2024-07-19 (current)
Line 1: Line 1:
-====== Download all files to the same local folder ======+====== Downloading all files from FTP/SFTP to the same local folder ======
When downloading a remote directory tree, WinSCP recreates an equivalent tree locally. When downloading a remote directory tree, WinSCP recreates an equivalent tree locally.
Line 13: Line 13:
$mask = "*.txt" $mask = "*.txt"
-$files = $session.EnumerateRemoteFiles($remotePath, $mask, [WinSCP.EnumerationOptions]::None)+$files = $session.EnumerateRemoteFiles( 
 +·············$remotePath, $mask, [WinSCP.EnumerationOptions]::AllDirectories) 
foreach ($fileInfo in $files) foreach ($fileInfo in $files)
{ {
-    Write-Host ("Downloading {0} ..." -f $fileInfo.FullName) +    Write-Host "Downloading $($fileInfo.FullName) ..." 
-    $session.GetFiles($session.EscapeFileMask($fileInfo.FullName), $localPath + "\*").Check() +   $filePath = [WinSCP.RemotePath]::EscapeFileMask($fileInfo.FullName) 
 +    $session.GetFiles($filePath, $localPath + "\*").Check()
} }
</code> </code>
-===== Using WinSCP scripting =====+===== [[script]] Using WinSCP scripting =====
It is too complicated to implement this task with a simple [[scripting]]. If you do not want to use the .NET assembly, you can at least download the remote directory tree as is, and then flatten it locally: It is too complicated to implement this task with a simple [[scripting]]. If you do not want to use the .NET assembly, you can at least download the remote directory tree as is, and then flatten it locally:
Line 34: Line 37:
    "exit"     "exit"
for /r "%TMPPATH%" %%f in ("*.*") do move "%%f" "C:\local\path\" for /r "%TMPPATH%" %%f in ("*.*") do move "%%f" "C:\local\path\"
-rd /s /q "%TMPPATH%"+rmdir /s /q "%TMPPATH%"
</code> </code>

Last modified: by martin