haegar75
Goto Top

Dateipfade aus Datei auslesen mit VB.net

Hallo Leute,
ich würde gerne mit vb.net eine Datei auslesen in der Dateipfade stehen, die mit Kommas getrennt sind. Die dort angebenen Dateien möchte ich dann vom Netzlaufwerk auf die lokale Platte kopieren. Hat jemand ne Idee?
Vielen Dank im voraus!

Gruß Haegar

Content-ID: 103426

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

Ausgedruckt am: 25.11.2024 um 00:11 Uhr

bastla
bastla 05.12.2008 um 20:05:27 Uhr
Goto Top
Hallo Haegar75!

Etwa so:
Const Liste As String = "D:\Dateipfade.txt"  
Const Ziel As String = "D:\TEMP"  

Dim FS As Object = My.Computer.FileSystem
Dim Datei As String
Dim Dateien As String = FS.ReadAllText(Liste)

For Each Datei In Split(Dateien, ",")  
    If FS.FileExists(Datei) Then
        FS.CopyFile(Datei, Ziel & "\" & FS.GetName(Datei), True)  
    Else
        MsgBox( _
            "Die Datei" & vbCrLf & vbCrLf & _  
            Datei & _
            vbCrLf & vbCrLf & "konnte nicht gefunden werden!", _  
            MsgBoxStyle.Critical, _
            "Datei nicht gefunden ...")  
    End If
Next
Ev bereits bestehende Zieldateien werden überschrieben.

Grüße
bastla
Haegar75
Haegar75 07.12.2008 um 15:29:25 Uhr
Goto Top
Danke! Da kann ich erstmal weiterbasteln! face-wink
Haegar75
Haegar75 08.12.2008 um 16:30:37 Uhr
Goto Top
Hi,
paar Tücken haben sich noch aufgetan..
-am Zeilenende steht hinter dem trennenden Komma noch ein & um dem Linker zu sagen, dass es in der nächsten Zeile weitergeht. Wie kann ich das aus dem Filestream filtern um es zu ignorieren?
-der letzte Eintrag ist ,U:\SPK\SPKA0057.lib to XXXXXXXX.LNK wobei alles nach dem .lib nicht dazugehören soll..

Wie kann ich unter vb.net festellen ob ein Netzlaufwerk verbunden (erreichbar) ist?
bastla
bastla 09.12.2008 um 01:25:08 Uhr
Goto Top
Hallo Haegar75!

Mit den entsprechenden Ergänzungen könnte das dann etwa so aussehen:
Const Liste As String = "D:\Dateipfade.txt"  
Const Ziel As String = "D:\TEMP"  

Dim FS As Object = My.Computer.FileSystem
Dim Datei As String
Dim Dateien As String = FS.ReadAllText(Liste)

Dateien = Replace(Dateien, ",&", ",") 'überflüssige "&" außerhalb eines Dateipfades entfernen  
Dim P As Long = InStrRev(Dateien, ".lib", , CompareMethod.Text))  
If P > Len(Dateien) - 20 Then
    'hinter ".lib" abschneiden, falls nahe dem Dateiende (innerhalb der letzten 20 Zeichen)  
    Dateien = Left(Dateien, P + Len(".lib") - 1)  
End If

If Not FS.DirectoryExists(Ziel) Then 'Zielordner vorhanden?  
    MsgBox( _
        "Der Ordner" & vbCrLf & vbCrLf & _  
        Ziel & _
        vbCrLf & vbCrLf & "ist nicht verfügbar!", _  
        MsgBoxStyle.Critical, _
        "Ordner nicht gefunden ...")  
Else
    For Each Datei In Split(Dateien, ",")  
        If FS.FileExists(Datei) Then
            FS.CopyFile(Datei, Ziel & "\" & FS.GetName(Datei), True)  
        Else
            MsgBox( _
                "Die Datei" & vbCrLf & vbCrLf & _  
                Datei & _
                vbCrLf & vbCrLf & "konnte nicht gefunden werden!", _  
                MsgBoxStyle.Critical, _
                "Datei nicht gefunden ...")  
        End If
    Next
End If
Grüße
bastla
Haegar75
Haegar75 09.12.2008 um 13:00:05 Uhr
Goto Top
1000 Dank! Leider bringt das "FS.FolderExists" eine Exception "Der offentliche Member FolderExists für den Typ FileSystemProxy wurde nicht gefunden." Sollte aber doch das gleiche Objekt sein wie FS.CopyFile oder?
Gruß Haegar
bastla
bastla 09.12.2008 um 13:21:03 Uhr
Goto Top
Hallo Haegar75!

Sorry - da ist mir VBS dazwischengekommen ...

Mit "FS.DirectoryExists" sollte es gehen (ändere ich auch gleich oben).

Grüße
bastla