在 C# 中使用 WinSCP 传输仅包含数字而不包含字母的文件?
Transfer files which contains only digits and not letters using WinSCP in C#?
我尝试了以下但没有成功 -
string mask = "Report01|*[A-Z]" +"*.txt"; //This line fails to select files which contains only digits
TransferOperationResult transferResult;
transferResult = session.getFiles("RemoteServerPath" +mask,"DestinationServerPath",false,transferOptions);
我正在尝试排除所有包含数字后字母的报告。
这不可能使用 WinSCP 文件 mask syntax。
但您可以轻松地:
- 迭代目录中的所有文件(使用
Session.ListDirectory
or 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:\local\path");
}
我尝试了以下但没有成功 -
string mask = "Report01|*[A-Z]" +"*.txt"; //This line fails to select files which contains only digits
TransferOperationResult transferResult;
transferResult = session.getFiles("RemoteServerPath" +mask,"DestinationServerPath",false,transferOptions);
我正在尝试排除所有包含数字后字母的报告。
这不可能使用 WinSCP 文件 mask syntax。
但您可以轻松地:
- 迭代目录中的所有文件(使用
Session.ListDirectory
orSession.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:\local\path");
}