Daten zu USB schicken

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von TanoshiiSuta.

    Daten zu USB schicken

    Hallo liebes Forum,

    ist es möglich ein Programm zu erstellen, welches ausgewählte Daten an einen USB-Stick schickt, den man vorher in einer Listbox ausgewählt hat,

    wenn ja hätte jemand eine Idee wie man diese Idee umsetzten kann?

    LG Alex034
    dankee ich werde mich erstmal mit diesen quellen beschäftigen :)

    edit: klappt alles soweit, aber wie bekomme ich jetzt ein file auf den USB?

    und wie kann er mir schon vorher alle USB's anzeigen, die im PC ,,stecken" ?

    bisher habe ich als speichern das:

    VB.NET-Quellcode

    1. IO.File.Copy(ofd.FileName, ListBox1.SelectedItem + "was muss hier rein?")


    LG

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Alex034“ ()

    TanoshiiSuta schrieb:

    Gerade schnell Geschrieben

    Werbungs-Nötigungs-Fileserver :thumbdown:
    Das Forum bietet eigene Upload-Möglichkeiten. :thumbup:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    So Dank der Hilfe alles soweit fertig, nun möchte ich, da es auch größere Files gibt, eine Progressbar einfügen, die mir anzeigt wann das kopieren fertig ist.
    Einen Timer habe ich, aber wie füge ich jetzt in den Code ein, dass er wenn ich auf Export klicke den timer (progressbar) startet und wenn er fertig ist, die progressbar = 100% ist?

    Hat einer eine Idee? Hier der Code von Button1:

    VB.NET-Quellcode

    1. If IO.File.Exists(OpenFileDialog1.FileName) Then
    2. If IO.Directory.Exists("F:/") Then
    3. Dim name As String = New Uri(OpenFileDialog1.FileName).AbsolutePath
    4. name = name.Substring(name.LastIndexOf("/") + 1, name.Length - name.LastIndexOf("/") - 1)
    5. MessageBox.Show(name)
    6. IO.File.Copy(OpenFileDialog1.FileName, (ListBox1.SelectedItem.ToString + "/" + name))


    PS: Wie kann ich einen ganzen Ordner kopieren?

    LG
    Progressbar:
    Da musst Du alles zu Fuß machen, sonst weißt Du ja nicht, wo gerade Du Dich bei Copy befindest.
    - Files in Blöcken stückweise
    oder
    - Files einzeln
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    VB.NET-Quellcode

    1. Private Sub Rekursiv(ByVal oDir As IO.DirectoryInfo)
    2. Dim oSubDir As IO.DirectoryInfo
    3. Dim oFile As IO.FileInfo
    4. Dim i As Integer = 0
    5. For Each oFile In oDir.GetFiles()
    6. With oFile
    7. If IO.File.Exists(oFile.FullName) Then
    8. If IO.Directory.Exists(ListBox1.SelectedItem.ToString) Then
    9. Name = oFile.Name
    10. MessageBox.Show(Name)
    11. IO.File.Copy(oFile.FullName, (ListBox1.SelectedItem.ToString + "/" + Name))
    12. End If
    13. End If
    14. End With
    15. ProgressBar1.value = i
    16. ProgressBar1.Maximum = oDir.GetFiles.Rank
    17. i+=1
    18. Next
    19. For Each oSubDir In oDir.GetDirectories()
    20. Rekursiv(oSubDir)
    21. Next
    22. End Sub


    nicht alles von mir : vbarchiv.net/tipps/tipp_1506-d…r-rekursiv-ermitteln.html , aber die hälfte :D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TanoshiiSuta“ ()

    Tut mir Leid, wenn ich heute einfach zu dumm bin -.-
    Hier mal der ganze Code:
    Ich steh irgendwie auf'm Schlauch, tut mir leid

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class frmain
    3. Private allDrives As New List(Of DriveInfo)
    4. Private Const WM_DEVICECHANGE As Integer = &H219
    5. Private Const DBT_DEVICEARRIVAL As Integer = &H8000
    6. Private Const DBT_DEVICEREMOVECOMPLETE As Integer = &H8004
    7. Protected Overloads Overrides Sub WndProc(ByRef msg As Message)
    8. MyBase.WndProc(msg)
    9. If msg.Msg = WM_DEVICECHANGE AndAlso msg.WParam = DBT_DEVICEARRIVAL Then
    10. 'alle laufwerke durchlaufen und in der liste suchen
    11. For Each s As String In Directory.GetLogicalDrives
    12. find_driveinfo_arg = s
    13. Dim d As DriveInfo = allDrives.Find(AddressOf find_driveinfo)
    14. If d Is Nothing Then
    15. 'laufwerk wurde in der liste nicht gefunden und ist somit neu
    16. 'laufwerk jetzt zur liste hinzufügen
    17. allDrives.Add(New DriveInfo(s))
    18. MsgBox("USB: " & s & " wurde hinzugefügt")
    19. Scann()
    20. End If
    21. Next
    22. End If
    23. If msg.Msg = WM_DEVICECHANGE AndAlso msg.WParam = DBT_DEVICEREMOVECOMPLETE Then
    24. 'alle laufwerke aus der liste prüfen
    25. Dim temp As List(Of DriveInfo) = GetAllDrives()
    26. For Each d As DriveInfo In allDrives
    27. find_driveinfo_arg = d.Name
    28. Dim lost As DriveInfo = temp.Find(AddressOf find_driveinfo)
    29. If lost Is Nothing Then
    30. 'laufwerk wurde in der liste nicht mehr gefunden
    31. 'laufwerk aus der liste entfernen
    32. allDrives.Remove(d)
    33. 'schleife verlassen
    34. Scann()
    35. Exit For
    36. End If
    37. Next
    38. End If
    39. End Sub
    40. Sub Scann()
    41. ListBox1.Items.Clear()
    42. For Each Ad In allDrives
    43. ListBox1.Items.Add(Ad.RootDirectory)
    44. Next
    45. End Sub
    46. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    47. allDrives = GetAllDrives()
    48. Scann()
    49. End Sub
    50. Private Function GetAllDrives() As List(Of DriveInfo)
    51. Dim ret As New List(Of DriveInfo)
    52. 'und wieder befüllen
    53. For Each d As String In Directory.GetLogicalDrives
    54. ret.Add(New DriveInfo(d))
    55. Next
    56. Return ret
    57. End Function
    58. 'suchfunktion zum finden der laufwerke in der collection
    59. Private find_driveinfo_arg As String
    60. Private Function find_driveinfo(ByVal d As DriveInfo)
    61. If d.Name = find_driveinfo_arg Then
    62. Return True
    63. Else
    64. Return False
    65. End If
    66. End Function
    67. 'Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    68. ' If IO.File.Exists(OpenFileDialog1.FileName) Then
    69. ' If IO.Directory.Exists("F:/") Then
    70. ' Dim name As String = New Uri(OpenFileDialog1.FileName).AbsolutePath
    71. ' name = name.Substring(name.LastIndexOf("/") + 1, name.Length - name.LastIndexOf("/") - 1)
    72. ' MessageBox.Show(name)
    73. ' IO.File.Copy(OpenFileDialog1.FileName, (ListBox1.SelectedItem.ToString + "/" + name))
    74. ' Else
    75. ' MessageBox.Show("Bitte wähle eine driver aus")
    76. ' End If
    77. ' Else
    78. ' MessageBox.Show("Bitte wähle eine datei aus")
    79. ' End If
    80. ' End Sub
    81. ' Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    82. ' OpenFileDialog1.ShowDialog()
    83. ' End Sub
    84. Private Sub ProgressBar1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    85. End Sub
    86. Private Sub Button2_Click(ByVal oDir As IO.DirectoryInfo)
    87. Dim oSubDir As IO.DirectoryInfo
    88. Dim oFile As IO.FileInfo
    89. Dim i As Integer = 0
    90. For Each oFile In oDir.GetFiles()
    91. With oFile
    92. If IO.File.Exists(oFile.FullName) Then
    93. If IO.Directory.Exists(ListBox1.SelectedItem.ToString) Then
    94. Name = oFile.Name
    95. MessageBox.Show(Name)
    96. IO.File.Copy(oFile.FullName, (ListBox1.SelectedItem.ToString + "/" + Name))
    97. End If
    98. End If
    99. End With
    100. ProgressBar1.Value = i
    101. ProgressBar1.Maximum = oDir.GetFiles.Rank
    102. i += 1
    103. Next
    104. For Each oSubDir In oDir.GetDirectories()
    105. Button2_Click(oSubDir)
    106. Next
    107. End Sub
    108. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    109. OpenFileDialog1.ShowDialog()
    110. End Sub
    111. End Class


    Das, wo der Fehler sein müsse ist hier:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. 'Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    2. ' If IO.File.Exists(OpenFileDialog1.FileName) Then
    3. ' If IO.Directory.Exists("F:/") Then
    4. ' Dim name As String = New Uri(OpenFileDialog1.FileName).AbsolutePath
    5. ' name = name.Substring(name.LastIndexOf("/") + 1, name.Length - name.LastIndexOf("/") - 1)
    6. ' MessageBox.Show(name)
    7. ' IO.File.Copy(OpenFileDialog1.FileName, (ListBox1.SelectedItem.ToString + "/" + name))
    8. ' Else
    9. ' MessageBox.Show("Bitte wähle eine driver aus")
    10. ' End If
    11. ' Else
    12. ' MessageBox.Show("Bitte wähle eine datei aus")
    13. ' End If
    14. ' End Sub
    15. ' Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    16. ' OpenFileDialog1.ShowDialog()
    17. ' End Sub
    18. Private Sub ProgressBar1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    19. End Sub
    20. Private Sub Button2_Click(ByVal oDir As IO.DirectoryInfo)
    21. Dim oSubDir As IO.DirectoryInfo
    22. Dim oFile As IO.FileInfo
    23. Dim i As Integer = 0
    24. For Each oFile In oDir.GetFiles()
    25. With oFile
    26. If IO.File.Exists(oFile.FullName) Then
    27. If IO.Directory.Exists(ListBox1.SelectedItem.ToString) Then
    28. Name = oFile.Name
    29. MessageBox.Show(Name)
    30. IO.File.Copy(oFile.FullName, (ListBox1.SelectedItem.ToString + "/" + Name))
    31. End If
    32. End If
    33. End With
    34. ProgressBar1.Value = i
    35. ProgressBar1.Maximum = oDir.GetFiles.Rank
    36. i += 1
    37. Next
    38. For Each oSubDir In oDir.GetDirectories()
    39. Button2_Click(oSubDir)
    40. Next
    41. End Sub
    42. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    43. OpenFileDialog1.ShowDialog()
    44. End Sub
    45. End Class