69304
Goto Top

Visual Basic 2008 Kopiert nur eine Datei aus ListBox-Inhalt anstatt alle

For-Schleife aus ListBox mit CopyFile()

Hallo!

Ich bin gerade dabei einen Datei Umbenenner zu basteln. Hab auch schon soweit alles fertig.

Zum Funktions-Prinzip

Verzeichnis wird ausgelesen und in ListBox ausgegeben, danach wird das Verzeichnis noch Mal eingelesen und über div. String-Replace-Routinen geschickt und in einer zweiten ListBox als "Vorschau" ausgegeben.


Das Problem ist, dass dann beim kopieren...

Vom Prinzip in DOS: copy dateialt.txt dateineu.txt


Mein Code dazu:

Private Sub cmdDo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDo.Click
        Dim DateinameAlt As String
        Dim DateinameNeu As String

        If lstDateien.Items(0).ToString() = "" And lstNeu.Items(0).ToString() = "" Then  
            MsgBox("Noch keine Vorschau ausgeführt!", MsgBoxStyle.OkOnly Or MsgBoxStyle.Critical)  
            Exit Sub
        End If

        For i As Integer = 1 To lblZaehler.Text Step 1
            DateinameAlt = txtPfad.Text & "\" & lstDateien.Items(0).ToString()  
            DateinameNeu = txtPfad.Text & "\" & lstNeu.Items(0).ToString()  
            'Movefile(DateinameAlt, DateinameNeu)  
            My.Computer.FileSystem.CopyFile(DateinameAlt, DateinameNeu, True)
        Next i
        MsgBox("Fertig!", MsgBoxStyle.OkOnly Or MsgBoxStyle.Information)  
End Sub


Das Problem ist nun, dass er immer nur die erste Datei des Verzeichnisses wie gewünscht kopiert.

Hat da wer ´ne Idee?


Gruß,
René.


P.S.: Wenn wir gerade dabei sind, alternativ würde es mir auch reichen, die Datei einfach nur umzubenennen. Move() geht leider nicht.

Content-Key: 112651

Url: https://administrator.de/contentid/112651

Printed on: April 19, 2024 at 06:04 o'clock

Member: bastla
bastla Mar 29, 2009 at 14:17:08 (UTC)
Goto Top
Hallo rbrixel!

Versuch es mit folgenden Zeilen 11 und 12
DateinameAlt = txtPfad.Text & "\" & lstDateien.Items(i -1).ToString()
DateinameNeu = txtPfad.Text & "\" & lstNeu.Items(i-1).ToString()
[Edit] Ergänzung:
Move() geht leider nicht.
Sollte es aber eigentlich:
My.Computer.FileSystem.MoveFile(DateinameAlt, DateinameNeu, True)
Abgesehen davon gäbe es ja ohnehin die "RenameFile"-Methode, daher:
My.Computer.FileSystem.RenameFile(txtPfad.Text & "\" & lstDateien.Items(i -1).ToString(), lstNeu.Items(i-1).ToString())
[/Edit]

Grüße
bastla
Mitglied: 69304
69304 Mar 29, 2009 at 14:24:09 (UTC)
Goto Top
oh mein *... klar. es war logischerweiße zu einfach...

sehs gerade auch, nachdem ich breakpoints eingefügt habe... thx.


noch mal für alle, so funktionierts dank bastla:

For i As Integer = 1 To lblZaehler.Text Step 1
       DateinameAlt = txtPfad.Text & "\" & lstDateien.Items(i - 1).ToString()  
       DateinameNeu = txtPfad.Text & "\" & lstNeu.Items(i - 1).ToString()  
       My.Computer.FileSystem.CopyFile(DateinameAlt, DateinameNeu)
Next i