Vb.net 删除名称包含字符串(匹配掩码)的FTP文件

Vb.net 删除名称包含字符串(匹配掩码)的FTP文件,vb.net,file,ftp,Vb.net,File,Ftp,我想删除FTP服务器上的所有文件,其名称包含特定字符串 例如,我在FTP上有以下文件: pippo_1.jpg pippo_2.jpg pippo_3.jpg pluto_1.jpg 我想删除所有包含pippo的文件 如何通过一次操作删除所有这些文件 谢谢大家! 在.NET framework中,FTP协议的任何实现都不允许在单个操作中执行此操作 您必须列出远程目录,筛选要删除的文件并逐个删除 如果您真的想在单个操作中实现这一点,您必须使用第三方库,该库支持带有文件掩码的操作。例如,允许使用

我想删除FTP服务器上的所有文件,其名称包含特定字符串

例如,我在FTP上有以下文件:

pippo_1.jpg
pippo_2.jpg
pippo_3.jpg
pluto_1.jpg
我想删除所有包含
pippo
的文件

如何通过一次操作删除所有这些文件


谢谢大家!

在.NET framework中,FTP协议的任何实现都不允许在单个操作中执行此操作

您必须列出远程目录,筛选要删除的文件并逐个删除


如果您真的想在单个操作中实现这一点,您必须使用第三方库,该库支持带有文件掩码的操作。例如,允许使用以下选项:

(我是WinSCP的作者)


如果您不想使用第三方库,请按照上述建议执行:

Dim url As String = "ftp://ftp.example.com/remote/path/"
Dim credentials As NetworkCredential = New NetworkCredential("username", "password")

Dim listRequest As FtpWebRequest = WebRequest.Create(url)
listRequest.Method = WebRequestMethods.Ftp.ListDirectory
listRequest.Credentials = credentials

Using listResponse As FtpWebResponse = listRequest.GetResponse(),
      listStream As Stream = listResponse.GetResponseStream(),
      listReader As StreamReader = New StreamReader(listStream)
    While Not listReader.EndOfStream
        Dim filename As String = listReader.ReadLine()

        If filename.StartsWith("pippo") Then
            Dim deleteRequest As FtpWebRequest = WebRequest.Create(url + filename)
            deleteRequest.Method = WebRequestMethods.Ftp.DeleteFile
            deleteRequest.Credentials = credentials
            deleteRequest.GetResponse()
        End If
    End While
End Using

我尝试用WinSCP解决问题,当我打开连接时,我收到以下错误:连接失败。连接失败。所有凭据都是正确的。我尝试连接WinSCP.exe,它工作得非常好。我认为问题与传输协议有关。你有什么建议吗?谢谢@MartinPrikryl您是如何连接到
winscp.exe
?使用脚本还是GUI?如果是脚本,您使用了什么命令?如果是GUI,您选择了什么协议?您可以使用WinSCP GUI。
Dim url As String = "ftp://ftp.example.com/remote/path/"
Dim credentials As NetworkCredential = New NetworkCredential("username", "password")

Dim listRequest As FtpWebRequest = WebRequest.Create(url)
listRequest.Method = WebRequestMethods.Ftp.ListDirectory
listRequest.Credentials = credentials

Using listResponse As FtpWebResponse = listRequest.GetResponse(),
      listStream As Stream = listResponse.GetResponseStream(),
      listReader As StreamReader = New StreamReader(listStream)
    While Not listReader.EndOfStream
        Dim filename As String = listReader.ReadLine()

        If filename.StartsWith("pippo") Then
            Dim deleteRequest As FtpWebRequest = WebRequest.Create(url + filename)
            deleteRequest.Method = WebRequestMethods.Ftp.DeleteFile
            deleteRequest.Credentials = credentials
            deleteRequest.GetResponse()
        End If
    End While
End Using