05. august 2002 - 15:03Der er
16 kommentarer og 2 løsninger
backup af visse filtyper.
Hej E.
Jeg kunne godt tænke mig at lave et lille script som kan gennemsøge C: efter nogle udvalgte filer.(Eks. *.doc, *.pst mm.) Når der så er fundet nogle filer skal de kopieres over på et N:, sammen med den sti som de lå i. Grunden til at stien skal med er at det skal være muligt at kopiere/lægge filerne tilbage (også med et lille script) Det jeg søger en funktion som gør det muligt at køre en backup af visse filtyper og hente dem igen.
Sørg for at du i VB har MicroSoft Scripting Runtime (Under Project, References)
Herefter gør du følgende:
Private Sub FlytFiler() Dim Sti As String Dim NySti As String Dim MyFolder As Folder Dim MyFolderFiles As Files Dim FSO As FileSystemObject Dim MyFile As File
Sti = "C:\test" 'Mappe der kopieres FRA NySti = "c:\test\test2" 'Mappe der kopieres TIL
Set FSO = CreateObject("Scripting.FileSystemObject") Set MyFolder = FSO.GetFolder(Sti) Set MyFolderFiles = MyFolder.Files
'Opretter ny folder If Not FSO.FolderExists(NySti) Then FSO.CreateFolder NySti
'Kopierer alle filer af ønsket filtype For Each MyFile In MyFolderFiles If LCase(Right(MyFile.Name, 4)) = ".jpg" Then MyFile.Copy NySti 'True betyder, at evt. eksist. filer overskrives End If Next MyFile
'Rydder op Set MyFolder = Nothing Set MyFolderFiles = Nothing Set FSO = Nothing End Sub
Der er plads til forbedringer af ovenstående, f.eks. kan du få genereret NySti ud fra Sti ved følgende:
NySti = "N" & Right(Sti,Len(Sti)-1), som skifter det første tegn i Sti ud med et "N"
Held og lykke - spør igen, hvis du ikke kan få det til at virke :o))
Nu har jeg siddet lidt og kikket på sagerne. Jeg kan ser, at du vil have kopieret ALLE filer på HELE C-drevet... Og ikke bare fra en enkelt mappe, som jeg har vist :o( Og så har jeg fundet på en lidt nemmere fil-kopieringsmetode, så vent lige lidt, så kommer der noget andet kode, der gør nøjagtigt hvad du vil :o)
Yeps - I know. Jeg ved ikke hvorfor, men jeg er gået over til at bruge FSO.CopyFile, det er meget simplere end ovenstående, der kan omskrives til:
Private Sub FlytFiler() Dim Sti As String Dim NySti As String Dim FSO As FileSystemObject
Sti = "C:\test\" 'Mappe der kopieres FRA NySti = "c:\test\test2\" 'Mappe der kopieres TIL Set FSO = CreateObject("Scripting.FileSystemObject") FSO.CopyFile Sti & "*.jpg", "c:\test\test2" Set FSO = Nothing End Sub
Men jeg sidder lige og prøver at finde ud af hvordan man looper gennem alle mapper på hele C-drevet - det er vel det du vil? Jeg kan godt finde alle mapper på c:, men ikke deres undermapper...
Vender stærkt tilbage, med mindre ovenstående er nok
Er der en begrænsning på hvor "dybt" der skal søges i undermapper? Jo dybere, jo mere besværligt...
Så vidt jeg kan se, bliver man nødt til at gøre følgende:
Du har f.eks. C:\mappe1\mappe2\mappe3\mappe4\mappe5
For hver mappe på C: (dvs. mappe1) kopier alle *.jpg-filer fra aktuel mappe
For hver undermappe i den aktuelle mappe (dvs. mappe2) kopier alle *.jpg-filer fra aktuel mappe
For hver undermappe i den aktuelle mappe (dvs. mappe3) kopier alle *.jpg-filer
For hver undermappe i den aktuelle mappe (dvs. mappe4) kopier alle *.jpg-filer
For hver undermappe i den aktuelle mappe (dvs. mappe5) kopier alle *.jpg-filer
næste undermappe næste undermappe næste undermappe næste undermappe
Det kan jeg godt lave til, men så skal jeg vide hvor "dybt" jeg skal søge efter filer. 2 niveauer, 4, niveauer, eller?
Desværre kan jeg ikke se anden mulighed end ovenstående, da jeg ikke kan finde en funktion der virker som "For alle mapper på c: gør..." - det nærmeste er "For alle mapper i aktuelmappe, kun ET niveau ned, gør..."
Måske har du nok til selv at lave det færdigt, nøgleordet er Set MySubFolder = MyFolder.SubFolders For Each MyCurrentFolder In MySubFolder ...
Hmm... flashit .. fik du dit program til at virke? Har nemlig søgt efter noget i den stil. Og kunne godt tænke mig en kopi af det, hvis det er muligt? Og eventuelt din kode, så jeg kan lave lidt forbedring af det :)
Synes godt om
Ny brugerNybegynder
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.