28. april 2002 - 23:24Der er
6 kommentarer og 1 løsning
Kopier alle mapper i en mappe til en anden mappe...
Hej
Jeg skal bruge kildekoden til et VB-program som gør følgende:
Checker hver undermappe i mappen C:\upload om de indeholder enten et "." eller en "_" i filnavnet. Kopierer hver mappe (som havde "." eller "_" i filnavnet) fra mappen C:\upload til mappen C:\delt
Jeg havde forstillet mig det forgik i en loop, men hvordan ;-) ?
Her er løsningen: Du skal tilføje en reference til FileSystemObject til dit project. Dette gøres under Project/References... Her afkrydser du MicroSoft Scripting Runtime.
Så indsætter du følgende kode: Private Sub Command1_Click() Dim fso As New FileSystemObject Dim KildeMappe As String, SlutMappe As String Dim Mappe As Folder, subMappe As Folder, AlleMapper As Folders Dim MappeNavn As String Dim Tlen As Long, i As Long
Set fso = CreateObject("Scripting.FileSystemObject")
KildeMappe = "c:\Kurt\" SlutMappe = "c:\Hans\" Set Mappe = fso.GetFolder(KildeMappe) Set AlleMapper = Mappe.SubFolders
For Each subMappe In AlleMapper MappeNavn = subMappe.Name Tlen = Len(MappeNavn) For i = 1 To Tlen If Mid(MappeNavn, i, 1) = "_" Or Mid(MappeNavn, i, 1) = "." Then fso.CopyFolder KildeMappe & MappeNavn, SlutMappe End If Next i Next subMappe Set subMappe = Nothing Set AlleMapper = Nothing Set Mappe = Nothing Set fso = Nothing
End Sub
Du skal naturligvis indsætte dine mappenavne i KildeMappe og SlutMappe. Du kan evt. indsætte dem med tekstbokse. Jeg har her lagt det hele i en knap, men det kan du jo gøre som du vil.
Der er en ubetydelig fejl: Hvis der er mere end 1 "_" eller "." i mappenavnet, så vil den blive kopieret igen. Dette er dog ligegyldigt set fra et praktisk synspunkt, da den første kopi blot bliver overskrevet.
Men det kan undgås ved at tilføje en linie:
Exit For
lige efter fso.CopyFolder.... linien inden i If sætningen.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.