Avatar billede flashit Nybegynder
05. august 2002 - 15:03 Der 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.

Nogle gode idér?
Avatar billede www.denn.dk Nybegynder
05. august 2002 - 15:04 #1
hmm, Jeg ved ikke hvordan men, Du kan i Windows hvis du bruger søge funtion så kan du skrive : *.doc og så finder den kun disse filtyper..
Avatar billede flashit Nybegynder
05. august 2002 - 15:06 #2
OK, men det er ikke lige det jeg savner ;-)
Avatar billede martin_moth Mester
05. august 2002 - 15:38 #3
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))
Avatar billede martin_moth Mester
05. august 2002 - 15:39 #4
PS. Ovenstående kopierer kun .jpg-filer - det kan du jo selv lave om på...
Avatar billede martin_moth Mester
05. august 2002 - 15:44 #5
PPS: Jeg skriver, at

'True betyder, at evt. eksist. filer overskrives

Det er fordi der i linien ovenover KUNNE stå

MyFile.Copy NySti, True

So sorry ;o)
Avatar billede martin_moth Mester
05. august 2002 - 15:55 #6
PPPS:

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)
Avatar billede flashit Nybegynder
05. august 2002 - 16:09 #7
Hej Martin moth

Jeg får en fejl i linie 70:
MyFile.Copy NySti

Fejl: Permission denied
Avatar billede flashit Nybegynder
05. august 2002 - 16:15 #8
Den opretter mappen som den skal, men stopper som skrevet ???
Avatar billede martin_moth Mester
05. august 2002 - 16:19 #9
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
Avatar billede martin_moth Mester
05. august 2002 - 16:21 #10
Wups - mangler at putte linien

If Not FSO.FolderExists(NySti) Then FSO.CreateFolder NySti

lige over linien FSO.CopyFile...
Avatar billede flashit Nybegynder
05. august 2002 - 16:23 #11
Jeg venter på du vender stærkt tilbage, da den skal søge hele c: igennem (med alle undermapper)
Men det tegner allerede fedt :-)
Avatar billede martin_moth Mester
05. august 2002 - 16:34 #12
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 ...

Hvis ikke, så råb om hjælp igen :o)
Avatar billede martin_moth Mester
05. august 2002 - 16:47 #13
Sådan - der var jeg heldig - jeg fandt et eksempel på nettet :o)

Du ved allerede nu hvordan du skal kopiere filer fra en folder til en anden, hvordan du opretter en folder osv.

Det eneste du mangler er, at få loopet gennem ALLE dine mapper på C-drevet. Og vupti, det kan du se her:

http://www.planetsourcecode.com/xq/ASP/txtCodeId.3851/lngWId.1/qx/vb/scripts/ShowCode.htm

Så er det bare i gang med klippe-klistre og måske få omskrivninger. Held og lykke - det skal nok tage dig lidt tid, men du har alle smådelene nu ;o)
Avatar billede sjh Nybegynder
07. august 2002 - 14:56 #14
Avatar billede martin_moth Mester
09. august 2002 - 19:34 #15
Halooo - fik du svar nok? Luk spørgsmålet eller kom igen...
Avatar billede flashit Nybegynder
10. august 2002 - 11:44 #16
Sorry, men jeg blev bare så opslugt....

Det er helt vildt fedt.
Jeg har godt nok ikke fået det til at virke, men har lært en hel masse.
I skal have mange tak :-)
Avatar billede sjh Nybegynder
10. august 2002 - 22:26 #17
selv tak :-)
Avatar billede Slettet bruger
14. august 2002 - 13:45 #18
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 :)
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