hardexit
Goto Top

Variabler Ordnername VB.Net

Servus,

also ich habe einen Ordner an dem immer ein Datum angehängt ist, diesen Variablen namen müsste ich irgendwie auslesen, kann mir da jemand weiterhelfen?

Als cmd habe ich das so gelöst, wie kann ich das in VB.Net umsetzen?
FOR /f "delims=" %%i IN ('DIR \\%server%%path%\service* /B') DO @set "folder=%%~nxi"  
c:\windows\system32\robocopy \\%server%%path%%folder%\ C:\Service-CD\ /MIR

Content-ID: 282599

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

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

emeriks
emeriks 11.09.2015 um 09:03:38 Uhr
Goto Top
Hi,
also ich habe einen Ordner an dem immer ein Datum angehängt ist, diesen Variablen namen müsste ich irgendwie auslesen, kann mir da jemand weiterhelfen?
Wie angehängt? Mit Leerzeichen dazwischen, oder Punkt oder Komma oder Klammer oder gar nichts dazwischen?

    Dim µDI As New System.IO.DirectoryInfo("........")   'hier den Ordnerpfad eintragen  
    Dim µParts() As String = µDI.Name.Split(".")             'hier das Trennzeichen eintragen; ich habe "." angenommen  
    Dim µDate As Date = CDate(µParts.Last)


E.
HardExit
HardExit 11.09.2015 um 09:11:37 Uhr
Goto Top
also es sind gar keine trennzeichen dazwischen das datum wird so geschrieben "20051015"
emeriks
emeriks 11.09.2015 aktualisiert um 11:03:33 Uhr
Goto Top
Aha. Nette Randinformation.

Na dann so vielleicht.
Dim µDI As New System.IO.DirectoryInfo("........")   'hier den Ordnerpfad eintragen  
Dim µD As String = µDI.Name.Substring(µDI.Name.Length - 8)
Dim µDate As New Date(CInt(µD.Substring(0, 4)), CInt(µD.Substring(4, 2)), CInt(µD.Substring(6, 2)))
HardExit
HardExit 11.09.2015 um 10:07:49 Uhr
Goto Top
und "service" & µDate ist dann der komplette Ordnername?
ich brauch den Ordnernamen ja nur, weil ich diesen auf die Festplatte kopieren muss; so wie ich es ja oben in der batch mache
emeriks
Lösung emeriks 11.09.2015 aktualisiert um 10:23:02 Uhr
Goto Top
  For Each µFolder As String In System.IO.Directory.GetDirectories("......", "Service????????")  
      Try
        Dim µDI As New System.IO.DirectoryInfo(µFolder)
        Dim µD As String = µDI.Name.Substring(µDI.Name.Length - 8)
        Dim µDate As New Date(CInt(µD.Substring(0, 4)), CInt(µD.Substring(4, 2)), CInt(µD.Substring(6, 2)))
        My.Computer.FileSystem.CopyDirectory(µFolder, "C:\Service-CD\" & µFolder.Split("\").Last, True)  
      Catch ex As Exception
        'dann ist es wohl kein Datum am Ende  
      End Try
    Next


Die "?" sind Wildcards. Nicht ersetzen!
HardExit
HardExit 11.09.2015 um 10:28:14 Uhr
Goto Top
könntest du mir den Part mal erklären?
Dim µDate As New Date(CInt(µD.Substring(0, 4)), CInt(µD.Substring(4, 2)), CInt(µD.Substring(6, 2))) 

und ich hab eine Textbox in der ich so Statusmeldungen ausgebe, kann ich prüfen ob das Kopieren Beendet ist?
oder reicht dass wenn ich es so schreibe?
My.Computer.FileSystem.CopyDirectory(µFolder, "C:\Service-CD\" & µFolder.Split("\").Last, True)  
Statusbox.Text = "Kopieren beendet"  
emeriks
emeriks 11.09.2015 aktualisiert um 11:03:26 Uhr
Goto Top
könntest du mir den Part mal erklären?
Dim µDate As New Date(CInt(µD.Substring(0, 4)), CInt(µD.Substring(4, 2)), CInt(µD.Substring(6, 2))) 
F1!
122990
Lösung 122990 11.09.2015 aktualisiert um 11:03:03 Uhr
Goto Top
Oder auch mit etwas Lambda Expressions:
Dim r As New System.Text.RegularExpressions.Regex("\d{8}$")  
Try
    For Each mydir As String In System.IO.Directory.GetDirectories("C:\Ordner", "Service*").Where(Function(d) r.IsMatch(d))  
          My.Computer.FileSystem.CopyDirectory(mydir, "C:\Service-CD\" & System.IO.Path.GetFileName(mydir))  
    Next
    msgbox("Finished")  
Catch ex As Exception
   MsgBox(ex.Message)
End Try
Gruß grexit
HardExit
HardExit 11.09.2015 um 13:35:47 Uhr
Goto Top
kann man das Kopieren auch per Ladebanken oder so angeben?
122990
122990 11.09.2015 aktualisiert um 13:38:21 Uhr
Goto Top
Zitat von @HardExit:

kann man das Kopieren auch per Ladebanken oder so angeben?
dazu musst du mit Threads (Backgroundworker/Thread/ etc.) arbeiten, da sonst der Thread das UI blockiert ...
HardExit
HardExit 11.09.2015 um 13:39:59 Uhr
Goto Top
Das wäre in dem Falle sogar egal, weil solang braucht man nichts anderes machen^^

Noch was wegen dem Kopieren, wenn ich nur den Inhalt des Ordners mydir haben möchte kann ich das dann so lösen? Jetzt kopiert er mir ja mdir in C:\Service-CD\
My.Computer.FileSystem.CopyDirectory(mydir & "\*", "C:\Service-CD\" & System.IO.Path.GetFileName(mydir))   
122990
122990 11.09.2015 aktualisiert um 13:46:05 Uhr
Goto Top
Noch was wegen dem Kopieren, wenn ich nur den Inhalt des Ordners mydir haben möchte kann ich das dann so lösen?
?? Nein, erster Parameter muss ein Ordner sein. Sprich mal deutlich was du erreichen willst.

Und mach mal einen Kurs ... bevor du hier das Forum mit sämtlichen VB.Net Grundlagen-Fragen rein haust ... The Reference is your friend