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?
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?
Vastaukset 5
Vanhimmat
http://www.kirkhalliday.com/vbcode.htm
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
...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 =)