如何使用C#和WinSCP模式获取远程目录的文件

如何使用C#和WinSCP模式获取远程目录的文件,c#,ftp,sftp,winscp,winscp-net,C#,Ftp,Sftp,Winscp,Winscp Net,我试图通过FTP/SFTP连接从远程服务器获取特定文件,我遇到的问题是,我试图通过特定模式获取远程目录中的文件数。我正在使用面具,但对我无效,它引发了一个异常: 这就是我所拥有的 DataFile.sRemoteDirectory = "/user/ftpuser/test/"; receivepattern = "Del*"; filesCount = session.ListDirectory( session.EscapeFileMask(DataFile.sRem

我试图通过FTP/SFTP连接从远程服务器获取特定文件,我遇到的问题是,我试图通过特定模式获取远程目录中的文件数。我正在使用面具,但对我无效,它引发了一个异常: 这就是我所拥有的

DataFile.sRemoteDirectory = "/user/ftpuser/test/";
receivepattern = "Del*";
filesCount =
    session.ListDirectory(
        session.EscapeFileMask(DataFile.sRemoteDirectory + receivepattern))
    .Files.Where(x => !x.IsDirectory).Count();
不接受通配符,只接受路径


由于是WinSCP.NET程序集5.9,因此您可以改用:


在旧版本中,您必须自己过滤
Session.ListDirectory
返回的文件:

Regex r = new Regex("^Del.*");

filesCount = session.ListDirectory(DataFile.sRemoteDirectory).Files
    .Where(x => !x.IsDirectory)
    .Where(x => r.Match(x.Name))
    .Count()

请参阅官方示例(尽管在PowerShell中)。

这就是我所做的,它工作正常!希望有人能对这段代码有所帮助,我使用了正则表达式,其中receivepattern是使用的模式:

receivepattern = "^[\\d\\w]*" + receivepattern;
r = new Regex(receivepattern);
filesCount = session.ListDirectory(DataFile.sRemoteDirectory).Files.Where(x => !x.IsDirectory).Where(x => r.IsMatch(x.Name)).Count();
receivepattern = "^[\\d\\w]*" + receivepattern;
r = new Regex(receivepattern);
filesCount = session.ListDirectory(DataFile.sRemoteDirectory).Files.Where(x => !x.IsDirectory).Where(x => r.IsMatch(x.Name)).Count();