Передавать файлы, которые содержат только цифры, а не буквы, используя WinSCP в C #?

#c# #winscp #winscp-net

Вопрос:

Я пробовал ниже, но безуспешно —

 string mask = "Report01|*[A-Z]"  "*.txt"; //This line fails to select files which contains only digits
TransferOperationResult transferResu<
transferResult = session.getFiles("RemoteServerPath"  mask,"DestinationServerPath",false,transferOptions);
 

Я пытаюсь исключить все отчеты, которые содержат буквы после цифр.

Ответ №1:

Это невозможно с использованием синтаксиса маски файла WinSCP.

Но вы можете легко:

  • перебирать все файлы в каталоге (используя Session.ListDirectory или Session.EnumerateRemoteFiles )
  • у вас есть пользовательская логика выбора (например, с помощью Regex.Match );
  • и передавать выбранные файлы один за другим.

Что-то вроде этого:

 var files = session.ListDirectory("/remote/path").Files;
files = files.Where(_ => Regex.Match(_.Name, "^[0-9] .txt$"));
foreach (var file in files)
{
    session.GetFileToDirectory(file.FullName, @"C:localpath");
}
 

Комментарии:

1. Это сработало для меня. Спасибо, Мартин.