Avatar billede webwally Nybegynder
28. april 2002 - 23:24 Der 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 ;-) ?

Svar venligst så hurtigt som muligt !!
Avatar billede mikker Nybegynder
29. april 2002 - 16:13 #1
Vil du have hele undermappen kopieret, eller mener du bare filen der indeholder ./_
Alle filer har vel et .
Prøv lige at beskrive det lidt nærmere
Avatar billede mikker Nybegynder
29. april 2002 - 16:28 #2
Hvis du selv vil rode lidt med det:

http://www.planetsourcecode.com/vb/scripts/ShowCode.asp?txtCodeId=29436&lngWId=1

Ellers må du sige til

- Mikker
Avatar billede webwally Nybegynder
30. april 2002 - 01:00 #3
Har ikke lige selv lyst til at rode med det ;-)

Jeg vil have alle undermapperne kopieret (og filerne der ligger i dem)

Du må lige sige til hvis du ikke forstår det ;-)
Avatar billede tjacob Juniormester
30. april 2002 - 11:00 #4
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.

/tjacob
Avatar billede tjacob Juniormester
30. april 2002 - 13:13 #5
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.

/tjacob
Avatar billede tjacob Juniormester
02. maj 2002 - 15:28 #6
Hvad så?  Er der noget du ikke forstår?
Avatar billede webwally Nybegynder
06. maj 2002 - 21:47 #7
Nej, tak for det gode svar!
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester