在 C# 中使用 WinSCP 传输仅包含数字而不包含字母的文件?

Posted

技术标签:

【中文标题】在 C# 中使用 WinSCP 传输仅包含数字而不包含字母的文件?【英文标题】:Transfer files which contains only digits and not letters using WinSCP in C#? 【发布时间】:2021-12-11 01:41:27 【问题描述】:

我在下面尝试但没有成功 -

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

我正在尝试排除所有在数字后包含字母的报告。

【问题讨论】:

【参考方案1】:

使用 WinSCP 文件 mask syntax 是不可能的。

但你可以很容易地:

迭代目录中的所有文件(使用Session.ListDirectorySession.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");

【讨论】:

这对我有用。谢谢马丁。

以上是关于在 C# 中使用 WinSCP 传输仅包含数字而不包含字母的文件?的主要内容,如果未能解决你的问题,请参考以下文章

使用 WinSCP 仅下载新文件

SSH 主机密钥指纹...与模式不匹配...在 C# 中使用 WinSCP .NET 程序集下载文件时

不要使用 WinSCP 将整个本地文件夹传输到远程目录,而只传输其中的文件

转: window中使用PSFTP/WinSCP实现SFTP上传下载

验证文本框是不是仅包含数字

工具WinSCP:windows和Linux中进行文件传输