Подсчет файлов в удаленной папке SFTP с WinSCP - PullRequest
2 голосов
/ 08 апреля 2019

Я бы хотел посчитать все файлы в удаленной папке.Я нашел «официальный» скрипт 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;
}

Ответы [ 2 ]

1 голос
/ 14 июня 2019

Используйте 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());

   }

}
1 голос
/ 08 апреля 2019

session.EnumerateReportFiles

см. Как получить файлы удаленного каталога, используя шаблон с C # и WinSCP

    $files =
        $session.EnumerateRemoteFiles(
            $remotePath, $wildcard, [WinSCP.EnumerationOptions]::None)
    var filecount = $files.Count();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...