Avatar billede jens_k Nybegynder
19. oktober 2004 - 13:34 Der er 13 kommentarer og
1 løsning

Oprettelse af mappe, og derefter kopier mappe til den nye mappe.

Hej

Jeg skal bruge et VB.NET Script som opretter en mappe med datoen som navn. F.eks. c:\19-10-2004

Derefter skal den kopiere mappen c:\tekster over i den ny oprettede mappe.

Hvordan får jeg dette sat op i VB.NET ?

Mvh

Jens
Avatar billede arne_v Ekspert
19. oktober 2004 - 13:38 #1
Et par stumper:

    Sub Copy(fnm1 As String, fnm2 As String)
        Dim f1 As Stream = New FileStream(fnm1, FileMode.Open, FileAccess.Read)
        Dim f2 As Stream = new FileStream(fnm2, FileMode.Create, FileAccess.Write)
        Dim c As Integer
        Dim more as boolean = True
        While (more)
            c = f1.ReadByte
            If c >= 0 then
                f2.WriteByte(CType(c, Byte))
            Else
                more = False
            End If
        End While
        f1.Close
        f2.Close
    End Sub

    Sub CopyDir(dir1 As String, dir2 As String)
        Dim files As String() = Directory.GetFiles(dir1)
        For Each f As String In files
            Copy(f, dir2 & f.Substring(dir1.Length))
        Next
        Dim dirs As String() = Directory.GetDirectories(dir1)
        For Each d As String In dirs
            CopyDir(d, dir2 & d.Substring(dir1.Length))
        Next
    End Sub
Avatar billede arne_v Ekspert
19. oktober 2004 - 13:43 #2
Dim newdir As String = "C:\" & DateTime.Now.ToString("dd-MM-yyyy")

Directory.CreateDirectory(newdir)
Avatar billede jens_k Nybegynder
19. oktober 2004 - 14:02 #3
Nu er jeg rimelig nybegynder til dette.

Så jeg har gjort det på denne måde: (Hvilket ikke virker, du kan måske fortælle mig hvorfor):

Jeg har en knap som udløser dette:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim newDir As String = CreateDir()
        CopyDir("c:\backuptest\", newDir)

    End Sub

Derefter har jeg lavet CreateDir på denne måde:

Function CreateDir()
    Dim newdir As String = "C:\" & DateTime.Now.ToString("dd-MM-yyyy")
    Directory.CreateDirectory(newdir)

    CreateDir = newdir
End Function


Jeg får disse 5 fejl:

Name 'CreateDir' is not declared.
Name 'CopyDir' is not declared.
Statement is not valid in a namespace.
Statement is not valid in a namespace.
Statement is not valid in a namespace.

Hvad gør jeg lige ?

Mvh

Jens
Avatar billede jens_k Nybegynder
19. oktober 2004 - 14:38 #4
Godt, det var så mig som fattede nul og nix. Nu har jeg fået tingene kopieret ind i den rigtige class.

Nu får jeg disse 5 fejl:

Type 'Stream' is not defined.
Type 'Stream' is not defined.
Name 'Directory' is not declared.
Name 'Directory' is not declared.
Name 'Directory' is not declared.
Avatar billede arne_v Ekspert
19. oktober 2004 - 14:38 #5
CreateDir og CopyDir skal være kendt hvor de bruges (hvis de er i samme klasse
skule det være OK).
Avatar billede arne_v Ekspert
19. oktober 2004 - 14:39 #6
Så mangler du vist kun at importere System.IO
Avatar billede arne_v Ekspert
19. oktober 2004 - 14:39 #7
Imports System.IO
Avatar billede jens_k Nybegynder
19. oktober 2004 - 14:44 #8
Yeps nu virker det. Der manglede dog et "\" i denne linie

Copy(f, dir2 & "\" & f.Substring(dir1.Length))

Men det virker nu.

Tusinde tak for det.

Laver du lige et svar, det virker som det skal.

Mvh

Jens.
Avatar billede jens_k Nybegynder
19. oktober 2004 - 14:49 #9
Lige en lille detalje, hvis nu der er oprettet undermappe i den mappe som skal tages en kopi af, så forekommer der en fejl fordi mappen ikke findes. Hvordan laver jeg sådan at det tjekkes om mappen findes, hvis den ikke gør så skal den oprette den. Der kan godt ske der er mapper under mapper under mapper (Træstruktur).

Er dette noget der er hurtig ordnet ?

Mvh

Jens K
Avatar billede arne_v Ekspert
19. oktober 2004 - 14:53 #10
If Not Directory.Exists(dir) Then
    Directory.CreateDir(dir)
End If
Avatar billede arne_v Ekspert
19. oktober 2004 - 14:53 #11
svar
Avatar billede jens_k Nybegynder
19. oktober 2004 - 15:01 #12
If Not Directory.Exists(d) Then
  Directory.CreateDirectory(Dir)
End If

Der var den.

Tak for det
Avatar billede majsmarken Nybegynder
19. oktober 2004 - 21:06 #13
<jens_k>: Husk du har en 'efterladenskab' ved
http://www.eksperten.dk/spm/552032
Avatar billede jens_k Nybegynder
20. oktober 2004 - 10:22 #14
Yeps, skal jeg nok lige ordne.

Tak for reminderen.

Mvh

Jens K
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