Differences

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

script_download_most_recent_file 2017-02-20 script_download_most_recent_file 2022-06-16 (current)
Line 2: Line 2:
===== [[library]] Using WinSCP .NET Assembly ===== ===== [[library]] Using WinSCP .NET Assembly =====
 +
==== [[powershell]] PowerShell ==== ==== [[powershell]] PowerShell ====
The following example uses [[library|WinSCP .NET assembly]] from a [[library_powershell|PowerShell]] script. If you have another preferred language, you can easily translate it. The following example uses [[library|WinSCP .NET assembly]] from a [[library_powershell|PowerShell]] script. If you have another preferred language, you can easily translate it.
Line 7: Line 8:
<code powershell> <code powershell>
param ( param (
-    $localPath = "c:\downloaded\", +    $localPath = "c:\downloaded", 
-    $remotePath = "/home/user/"+    $remotePath = "/home/user"
) )
Line 22: Line 23:
        UserName = "user"         UserName = "user"
        Password = "mypassword"         Password = "mypassword"
-        SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"+        SshHostKeyFingerprint = "ssh-rsa 2048 xxxxxxxxxxx..."
    }     }
Line 50: Line 51:
        # Download the selected file         # Download the selected file
-        $session.GetFiles($session.EscapeFileMask($remotePath + $latest.Name), $localPath).Check()+        $session.GetFileToDirectory($latest.FullName, $localPath) | Out-Null
    }     }
    finally     finally
Line 60: Line 61:
    exit 0     exit 0
} }
-catch [Exception]+catch
{ {
-    Write-Host ("Error: {0}" -f $_.Exception.Message)+    Write-Host "Error: $($_.Exception.Message)"
    exit 1     exit 1
} }
Line 87: Line 88:
                UserName = "user",                 UserName = "user",
                Password = "mypassword",                 Password = "mypassword",
-                SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx",+                SshHostKeyFingerprint = "ssh-rsa 2048 xxxxxxxxxxx...",
            };             };
Line 95: Line 96:
                session.Open(sessionOptions);                 session.Open(sessionOptions);
-                const string remotePath = "/home/user/"; +                const string remotePath = "/home/user"; 
-                const string localPath = "c:\\downloaded\\";+                const string localPath = @"C:\downloaded";
                // Get list of files in the directory                 // Get list of files in the directory
Line 115: Line 116:
                // Download the selected file                 // Download the selected file
-                session.GetFiles(session.EscapeFileMask(remotePath + latest.Name), localPath).Check();+                session.GetFileToDirectory(latest.FullName, localPath);
            }             }
Line 127: Line 128:
    }     }
} }
 +</code>
 +
 +==== [[vbnet]] VB.NET ====
 +
 +The following snippet selects the most recent file from a directory listing. Most of the remaining code should be trivial to translate from the above C# example.
 +
 +<code vbnet>
 +Dim latest As RemoteFileInfo =
 +    directoryInfo.Files _
 +        .Where(Function(file) Not file.IsDirectory) _
 +        .OrderByDescending(Function(file) file.LastWriteTime) _
 +        .FirstOrDefault()
</code> </code>
Line 140: Line 153:
Some of following alternatives can be easier to implement or actually even more appropriate for your specific task: Some of following alternatives can be easier to implement or actually even more appropriate for your specific task:
-  * Synchronizing a remote directory to a local directory (using ''[[scriptcommand_synchronize|synchronize local]]'' in scripting or ''[[library_session_synchronizedirectories|Session.SynchronizeDirectories(SynchronizationMode.Local, ...)]]'' in .NET assembly);+  * Synchronizing a remote directory to a local directory (using ''[[scriptcommand_synchronize|synchronize local]]'' in scripting; or ''[[library_session_synchronizedirectories|Session.SynchronizeDirectories]]'' with ''mode'' parameter set to ''SynchronizationMode.Local'' in .NET assembly);
  * Downloading all files created in the last 24 hours (using [[file_mask|file mask]] ''*>=1D''; e.g. ''%%get -filemask="*>=1D" /home/user/*%%'', or an equivalent in .NET assembly).   * Downloading all files created in the last 24 hours (using [[file_mask|file mask]] ''*>=1D''; e.g. ''%%get -filemask="*>=1D" /home/user/*%%'', or an equivalent in .NET assembly).
-  * Downloading all files created today (using ''[[scripting#timestamp|%TIMESTAMP%]]'' syntax to format [[file_mask|file mask]] with today's time constraint, e.g. ''%%get -filemask="*>=%TIMESTAMP#yyyy-mm-dd%" /home/user/*%%'', or an equivalent in .NET assembly).+  * Downloading all files created today (using the [[file_mask#today|''today'' keyword in the file mask]]; e.g. ''%%get -filemask="*>=today" /home/user/*%%'', or an equivalent in .NET assembly)
 +  * If you need to download all files that were not downloaded yet, but you do not keep local copies of the files to synchronize the remote directory against, see [[library_example_remember_downloaded_files|*]].
===== Further Reading ===== ===== Further Reading =====
Line 148: Line 162:
  * Guide to [[guide_automation|scripting/automation]];   * Guide to [[guide_automation|scripting/automation]];
  * [[library|WinSCP .NET assembly]];   * [[library|WinSCP .NET assembly]];
-  * [[library_powershell|Using WinSCP .NET Assembly from PowerShell]].+  * [[library_powershell|*]].

Last modified: by martin