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

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

Printed on: April 27, 2024 at 03:04 o'clock

Member: emeriks
emeriks Sep 11, 2015 at 07:03:38 (UTC)
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.
Member: HardExit
HardExit Sep 11, 2015 at 07:11:37 (UTC)
Goto Top
also es sind gar keine trennzeichen dazwischen das datum wird so geschrieben "20051015"
Member: emeriks
emeriks Sep 11, 2015 updated at 09:03:33 (UTC)
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)))
Member: HardExit
HardExit Sep 11, 2015 at 08:07:49 (UTC)
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
Member: emeriks
Solution emeriks Sep 11, 2015 updated at 08:23:02 (UTC)
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!
Member: HardExit
HardExit Sep 11, 2015 at 08:28:14 (UTC)
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"  
Member: emeriks
emeriks Sep 11, 2015 updated at 09:03:26 (UTC)
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!
Mitglied: 122990
Solution 122990 Sep 11, 2015 updated at 09:03:03 (UTC)
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
Member: HardExit
HardExit Sep 11, 2015 at 11:35:47 (UTC)
Goto Top
kann man das Kopieren auch per Ladebanken oder so angeben?
Mitglied: 122990
122990 Sep 11, 2015 updated at 11:38:21 (UTC)
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 ...
Member: HardExit
HardExit Sep 11, 2015 at 11:39:59 (UTC)
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))   
Mitglied: 122990
122990 Sep 11, 2015 updated at 11:46:05 (UTC)
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