Hakemiston tyhjentäminen Visual Basicilla

Kuinka saan Visual Basicilla ohjelmoitua seuraavan jutun...
Ohjelmani pitäisi tyhjentää kansio kaikista tiedostoista, alihakemistoista jne. että se on ihan tyhjä.
Kuitenkin ohjelmani ei saisi tuhota koko kansioa siis jos valitsen esimerkiksi TEMP kansion, niin sitä itse TEMP kansioa ei saisi tuhota vaan vain sen sisältö eli että sinne ei jäisi tyhjiä hakemistoja tai tiedostoja :)
Kuinka tälläinen tehdään?
5306
Äänestä

Muut lukivat myös

Vastaukset 5

Vanhimmat
  • En tiedä minkä takia, mutta en saanut toimimaan tuota koodi esimerkkiä jonka annoit.

    Itse löysin tälläisen koodin joka toimii niin kuin sen kuuluukin mutta ongelmana on vain se, että se tuhoaa myöskin sen ylimmän hakemiston eli jos laitan sijainniksi C:WindowsTEMP, niin se tuhoaa myöskin tuon TEMP kansion jota se ei saisi tehdä.
    Itse en osaa (yritin kyllä) muokata tätä koodia siten, että se jättäisi tuon ylimmän hakemiston poistamatta mutta en onnistunut siinä.
    Jos joku viitsisi hieman auttaa tyhmää :)

    Public Function KillFolder(ByVal FullPath As String) As Boolean
    On Error Resume Next
    Dim oFso As New Scripting.FileSystemObject
    If Right(FullPath, 1) = "" Then FullPath = Left(FullPath, Len(FullPath) - 1)

    If oFso.FolderExists(FullPath) Then
    oFso.DeleteFolder FullPath, True
    KillFolder = Err.Number = 0 And oFso.FolderExists(FullPath) = False
    End If
    End Function

    Äänestä

  • . kirjoitti:

    En tiedä minkä takia, mutta en saanut toimimaan tuota koodi esimerkkiä jonka annoit.

    Itse löysin tälläisen koodin joka toimii niin kuin sen kuuluukin mutta ongelmana on vain se, että se tuhoaa myöskin sen ylimmän hakemiston eli jos laitan sijainniksi C:WindowsTEMP, niin se tuhoaa myöskin tuon TEMP kansion jota se ei saisi tehdä.
    Itse en osaa (yritin kyllä) muokata tätä koodia siten, että se jättäisi tuon ylimmän hakemiston poistamatta mutta en onnistunut siinä.
    Jos joku viitsisi hieman auttaa tyhmää :)

    Public Function KillFolder(ByVal FullPath As String) As Boolean
    On Error Resume Next
    Dim oFso As New Scripting.FileSystemObject
    If Right(FullPath, 1) = "" Then FullPath = Left(FullPath, Len(FullPath) - 1)

    If oFso.FolderExists(FullPath) Then
    oFso.DeleteFolder FullPath, True
    KillFolder = Err.Number = 0 And oFso.FolderExists(FullPath) = False
    End If
    End Function

    Virheenkäsittelyä en tuohon laittanu, muuten toimii kyllä.

    Function DeleteFolder(Path)

    Dim fso
    Dim f
    Dim sf

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.getfolder(Path)
    For Each sf In f.subfolders
    sf.Delete
    Next
    For Each sf In f.files
    sf.Delete
    Next
    Set fso = Nothing

    End Function

    Äänestä

  • m kirjoitti:

    Virheenkäsittelyä en tuohon laittanu, muuten toimii kyllä.

    Function DeleteFolder(Path)

    Dim fso
    Dim f
    Dim sf

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.getfolder(Path)
    For Each sf In f.subfolders
    sf.Delete
    Next
    For Each sf In f.files
    sf.Delete
    Next
    Set fso = Nothing

    End Function

    ...tässä on se sama ongelma kuin muissakin tälläisissä, että jos Internet Explorer on auki ja yritän tyhjentää "C:WINDOWSTemporary Internet Files" kansion, niin se ei poista sieltä mitään!
    Laitoin tuohon edelliseen viestiini sen koodin jonka löysin... se osaa tyhjentää tuon kansion vaikka IE onkin auki, mutta siinä on se yksi ongelma...

    Äänestä

  • . kirjoitti:

    ...tässä on se sama ongelma kuin muissakin tälläisissä, että jos Internet Explorer on auki ja yritän tyhjentää "C:WINDOWSTemporary Internet Files" kansion, niin se ei poista sieltä mitään!
    Laitoin tuohon edelliseen viestiini sen koodin jonka löysin... se osaa tyhjentää tuon kansion vaikka IE onkin auki, mutta siinä on se yksi ongelma...

    Mee mistä aita on matalin ja luo se kansio uusiks =)

    Äänestä

Kommentoi aloitusta


. kirjoitti:

Kuinka saan Visual Basicilla ohjelmoitua seuraavan jutun...
Ohjelmani pitäisi tyhjentää kansio kaikista tiedostoista, alihakemistoista jne. että se on ihan tyhjä.
Kuitenkin ohjelmani ei saisi tuhota koko kansioa siis jos valitsen esimerkiksi TEMP kansion, niin sitä itse TEMP kansioa ei saisi tuhota vaan vain sen sisältö eli että sinne ei jäisi tyhjiä hakemistoja tai tiedostoja :)
Kuinka tälläinen tehdään?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu