FileSystem.MoveFile több fájl másolása
2021-07-02T10:06:04+02:00
2021-07-12T15:33:52+02:00
2022-08-12T03:40:30+02:00
fabi
Sziasztok!

ezzel szeretnék fájlokat mozgatni gombnyomásra:

My.Computer.FileSystem.MoveFile("\szerver\mappa" & txtSzerzAzon.Text & ".pdf", "\szerver\mappa\bizalmas")
ahol a txtSzerzAzon.Text eredménye xxxx_xxxx 

az első mappából szeretném átmozgatni az összes olyan pdf fájlt aminek a nevében benne van az xxxx_xxxx

Gondolom, ezt egy joker karakterrel kellene, de nem jövök rá hogyan

Köszi
Mutasd a teljes hozzászólást!
Szia!
Próbálgattam a Visual Basic-et (valamikor el kell kezdeni) és úgy tűnik, hogy a Movefile() csak teljes, létező fájlnévvel működik, teljesen meg kell adni a forrás és cél fájlt. Egyik paraméterben sem lehet *-ot használni, neked ezért ír hibát. A cél sem lehet mappa, ahogyan próbáltad. A szerver neve vagy IP címe előtt dupla \ kell, ez a bemásolt forráskódból is eltűnt (már javítottam)!
A GetFiles() tudja beolvasni a szűrésnek megfelelő fájlokat, utána ezeket tudod ciklusban egyesével átmozgatni a Movefile() segítségével. Éles változatban célszerű lenne ellenőrizni, hogy valóban megtörténik-e a fájl átmozgatása. A teszt jól működött, de lehetnek hálózati hibák stb.

Üdv. Péter

Valami ilyesmi a megoldás:

Private Sub teszt_Click(sender As Object, e As EventArgs) Handles teszt.Click Dim serverPath As String Dim pdfFilter As String Dim filteredFiles Dim info serverPath = "\\szerver\mappa\" pdfFilter = "*" & txtSzerzAzon.Text & "*.pdf" filteredFiles = My.Computer.FileSystem.GetFiles(serverPath, FileIO.SearchOption.SearchTopLevelOnly, pdfFilter) For Each archivFile In filteredFiles If System.IO.File.Exists(archivFile) Then info = My.Computer.FileSystem.GetFileInfo(archivFile) My.Computer.FileSystem.MoveFile(archivFile, "\\szerver\mappa\bizalmas\" & info.Name) ' MsgBox(info.Name) End If Next End Sub
Mutasd a teljes hozzászólást!

  • Szia!
    Próbáld így:

    My.Computer.FileSystem.MoveFile("\szerver\mappa\*" & txtSzerzAzon.Text & "*.pdf", "\szerver\mappa\bizalmas")
    Persze ha a szerver\mappa is változó és nem konkrét név, akkor a változó után & "*" & txt....
    Üdv.
    Mutasd a teljes hozzászólást!
  • Szia!

    Ezt a választ kapom: :(

    Érvénytelen karakterek szerepelnek az elérési útban
    Mutasd a teljes hozzászólást!
  • Szia!
    Próbálgattam a Visual Basic-et (valamikor el kell kezdeni) és úgy tűnik, hogy a Movefile() csak teljes, létező fájlnévvel működik, teljesen meg kell adni a forrás és cél fájlt. Egyik paraméterben sem lehet *-ot használni, neked ezért ír hibát. A cél sem lehet mappa, ahogyan próbáltad. A szerver neve vagy IP címe előtt dupla \ kell, ez a bemásolt forráskódból is eltűnt (már javítottam)!
    A GetFiles() tudja beolvasni a szűrésnek megfelelő fájlokat, utána ezeket tudod ciklusban egyesével átmozgatni a Movefile() segítségével. Éles változatban célszerű lenne ellenőrizni, hogy valóban megtörténik-e a fájl átmozgatása. A teszt jól működött, de lehetnek hálózati hibák stb.

    Üdv. Péter

    Valami ilyesmi a megoldás:

    Private Sub teszt_Click(sender As Object, e As EventArgs) Handles teszt.Click Dim serverPath As String Dim pdfFilter As String Dim filteredFiles Dim info serverPath = "\\szerver\mappa\" pdfFilter = "*" & txtSzerzAzon.Text & "*.pdf" filteredFiles = My.Computer.FileSystem.GetFiles(serverPath, FileIO.SearchOption.SearchTopLevelOnly, pdfFilter) For Each archivFile In filteredFiles If System.IO.File.Exists(archivFile) Then info = My.Computer.FileSystem.GetFileInfo(archivFile) My.Computer.FileSystem.MoveFile(archivFile, "\\szerver\mappa\bizalmas\" & info.Name) ' MsgBox(info.Name) End If Next End Sub
    Mutasd a teljes hozzászólást!
  • Szia!

    Nagyon Köszönöm!

    Sikerült ezzel megoldani!
    Mutasd a teljes hozzászólást!
abcd