2017-02-12 22 views
2

名前に特定の文字列が含まれているFTPサーバー上のすべてのファイルを削除します。例えば文字列を含む名前のFTPファイルを削除する(一致するマスク)

私はFTP上のこれらのファイルを持っている:

pippo_1.jpg 
pippo_2.jpg 
pippo_3.jpg 
pluto_1.jpg 

私はpippoを含むすべてのファイルを削除したいと思います。

これらのファイルをすべて1回の操作で削除するにはどうすればよいですか?

ありがとうございました!

答えて

2

.NETフレームワークでFTPプロトコルを実装していないため、これを1回の操作で行うことができます。

リモートディレクトリの一覧を表示し、削除するファイルをフィルタして1つずつ削除する必要があります。


実際にこの操作を1回の操作で実行する場合は、ファイルマスクの操作をサポートするサードパーティライブラリを使用してください。例えば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 
+0

私は接続を開くと、私はこのエラーが表示されます: 接続に失敗しました。接続に失敗しました。 すべての資格情報が正しいです。私はWinSCP.exeと接続して試してみると、完璧に動作します。 私は問題が転送プロトコルに関連していると考えます。 ご意見はありますか? ありがとう! @MartinPrikryl –

+0

どのように 'winscp.exe'に接続しましたか?スクリプトやGUIの使用?スクリプト作成の場合は、どのコマンドを使用しましたか? GUIの場合、どのプロトコルを選択しましたか?あなたはWinSCP GUI [あなたのためのコードテンプレートを生成する](https://winscp.net/eng/docs/ui_generateurl#code)を持つことができます。 –

関連する問題