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-Key: 103426

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

Printed on: April 25, 2024 at 12:04 o'clock

Member: bastla
bastla Dec 05, 2008 at 19:05:27 (UTC)
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
Member: Haegar75
Haegar75 Dec 07, 2008 at 14:29:25 (UTC)
Goto Top
Danke! Da kann ich erstmal weiterbasteln! face-wink
Member: Haegar75
Haegar75 Dec 08, 2008 at 15:30:37 (UTC)
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?
Member: bastla
bastla Dec 09, 2008 at 00:25:08 (UTC)
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
Member: Haegar75
Haegar75 Dec 09, 2008 at 12:00:05 (UTC)
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
Member: bastla
bastla Dec 09, 2008 at 12:21:03 (UTC)
Goto Top
Hallo Haegar75!

Sorry - da ist mir VBS dazwischengekommen ...

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

Grüße
bastla