Подсчет файлов в удаленной папке SFTP с WinSCP

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;
}
  • 0
    Я думаю, что это даст вам то, что вам нужно: stackoverflow.com/questions/34680848/… . Посмотрите на Session.EnumerateRemoteFiles
  • 0
    Спасибо! Работал! int filecount = session.EnumerateRemoteFiles("/subdoms/admin", "*.php", EnumerationOptions.None).Count(); label3.Text = Convert.ToString(filecount);
Теги:
sftp
winscp
winscp-net

2 ответа

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());

   }

}
1

session.EnumerateReportFiles

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню