使用WinSCP计算远程SFTP文件夹中的文件

问题描述 投票:2回答:2

我想计算远程文件夹中的所有文件。我找到了“官方”WinSCP脚本,它列出了文件夹中的每个文件。但我想算一下,然后将结果保存到变量中。什么是最简单的方法?

try
{
    // Setup session options
    SessionOptions sessionOptions = new SessionOptions
    {
        Protocol = Protocol.Sftp,
        HostName = "example.com",
        UserName = "user",
        Password = "mypassword",
        SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx..."
    };

    using (Session session = new Session())
    {
        // Connect
        session.Open(sessionOptions);

        RemoteDirectoryInfo directory =
            session.ListDirectory("/subdoms/admin/");

        foreach (RemoteFileInfo fileInfo in directory.Files)
        {
            Console.WriteLine(
                "{0} with size {1}, permissions {2} and last modification at {3}",
                fileInfo.Name, fileInfo.Length, fileInfo.FilePermissions,
                fileInfo.LastWriteTime);
        }
    }

    return 0;   
}
catch (Exception e)
{
    Console.WriteLine("Error: {0}", e);
    return 1;
}
c# .net sftp winscp winscp-net
2个回答
1
投票

session.EnumerateReportFiles

How to get the files of remote directory using a pattern with C# and WinSCP

    $files =
        $session.EnumerateRemoteFiles(
            $remotePath, $wildcard, [WinSCP.EnumerationOptions]::None)
    var filecount = $files.Count();

1
投票

使用EnumerateRemoteFiles并在获得主父目录的所有文件信息后获取计数。

foreach (RemoteFileInfo fileInfo in directory.Files)
{
   Console.WriteLine("{0} with size {1}, permissions {2} and last modification at {3}",
                      fileInfo.Name, fileInfo.Length, fileInfo.FilePermissions, 
                      fileInfo.LastWriteTime);

   Console.WriteLine(fileInfo.FullName);

   string FilePath = fileInfo.FullName;

   if (session.FileExists(FilePath))
   {
      Console.WriteLine("Folder exists");

      var a = session.EnumerateRemoteFiles(FilePath, null, 
              EnumerationOptions.AllDirectories);

      Console.WriteLine(a.Count());

   }

}
© www.soinside.com 2019 - 2024. All rights reserved.