2
我想刪除FTP服務器,其名稱中包含某些字符串的所有文件。刪除FTP文件包含一個字符串(匹配掩碼)名稱
比如我對FTP這些文件:
pippo_1.jpg
pippo_2.jpg
pippo_3.jpg
pluto_1.jpg
我想刪除包含pippo
所有文件。
如何刪除單個操作所有這些文件?
謝謝!
我想刪除FTP服務器,其名稱中包含某些字符串的所有文件。刪除FTP文件包含一個字符串(匹配掩碼)名稱
比如我對FTP這些文件:
pippo_1.jpg
pippo_2.jpg
pippo_3.jpg
pluto_1.jpg
我想刪除包含pippo
所有文件。
如何刪除單個操作所有這些文件?
謝謝!
在.NET框架FTP協議的任何實現允許這種在單個操作中。
你要列出遠程目錄,過濾你想刪除一個刪除一個文件。
如果你真的想這樣做在一個單一的操作,你必須使用一個第三方庫,支持與文件掩碼操作。例如WinSCP .NET assembly允許這與它Session.RemoveFiles
method:
Dim sessionOptions As New SessionOptions
With sessionOptions
.Protocol = Protocol.Ftp
.HostName = "ftp.example.com"
.UserName = "username"
.Password = "password"
End With
Using session As New Session
session.Open(sessionOptions)
session.RemoveFiles("/remote/path/pippo*").Check()
End Using
(我的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 [爲您生成代碼模板](https://winscp.net/eng/docs/ui_generateurl#code)。 –