Dateien umbenennen auf FTP-Server

Hallo,

ich versuche schon seit Tagen, ein Script (diesmal mit Visual Basic in VB Express) zu erstellen, das sich auf einem FTP-Server einloggt, dort alle Dateien durchgeht und deren Namen auf bestimmte Zeichen hin überprüft (es sollen nur bestimmte Dateien umbenannt werden) und diese dann umbenennt. Da die Dateinamen jeden Tag anders sind (es ist ein Datum enthalten), kann ich sie nicht fest übergeben. Das erstellen des neuen Namens ist aber mit VB kein Problem für mich, jedoch schaffe ich es nicht, die Dateien überhaupt zu erreichen.

Folgendes habe ich bis jetzt:

Public Sub New(ByVal FtpServer As String, ByVal User As String, ByVal Password As String)
Server = „ftp://“ & FtpServer
Username = User
Pwd = Password
FtpUri = New Uri(Server)
Cred = New NetworkCredential(Username, Pwd)
FtpReq = FtpWebRequest.Create(Server)
FtpReq.Credentials = Cred
End Sub

Public Function RenameFile(ByVal Datei As String) As Boolean
Dim all_right As Boolean = False
Dim NeuerName As String
Dim fso = CreateObject(„Scripting.FileSystemObject“)
Dim folder = fso.Getfolder(".")
For Each file In folder.Files
If Left(file.name, 4) = „test“ Then
Datei = file.name
If Right(file.name, 2) = „gz“ Then
NeuerName = Left(file.name, 36) & Right(file.name, 7)
ElseIf Right(file.name, 3) = „md5“ Then
NeuerName = Left(file.name, 36) & Right(file.name, 8)
Else : GoTo weiter
End If
If fso.FileExists(NeuerName) Then
GoTo weiter
End If

Dim FtpFileUri = New Uri(Server & „/“ & Datei)
Try
'Initialisierung des Requests
Dim FtpFileReq As FtpWebRequest = FtpWebRequest.Create(FtpFileUri)
FtpFileReq.Credentials = Cred
FtpFileReq.Method = Net.WebRequestMethods.Ftp.Rename
FtpFileReq.Timeout = (60000 * 1)
FtpFileReq.RenameTo = NeuerName
Dim FtpResponse As FtpWebResponse = FtpFileReq.GetResponse
If FtpResponse.StatusDescription „“ Then
all_right = True
End If
FtpResponse.Close()
Catch ex As Exception
all_right = False
MsgBox(ex.Message)
End Try
End If
End If
weiter:
Next
Return all_right
End Function
End Class

Das Problem ist, dass das FileSystemObject nicht auf den Server zugreift, sondern lokal. Was kann ich tun damit es klappt?

Danke!

Katja

Hab die Lösung selbst gefunden:
statt dem bisherigen object nutze ich nun folgendes:

FtpReq.Method = WebRequestMethods.Ftp.ListDirectory
Dim sr As New StreamReader(FtpReq.GetResponse().GetResponseStream())
Dim str As String = sr.ReadLine()
While Not str Is Nothing
Console.WriteLine(str)
str = sr.ReadLine()
End While
sr.Close()
sr = Nothing

Die Umbenennung je File muss dann entsprechend innerhalb der While-Schleife eingebaut werden.

VG, Katja