Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Siivousohjelma

Sivun loppuun

CoDeR [22.05.2004 12:06:48]

#

Oon tässä tekemässä ohjelmaa jolla saa poistettua kaikki ylimääräiset roskat koneelta(vb) , mutta tuli vaan pikku pulma, nimittäin millä komennolla saa poistettua? =(

petrinm [22.05.2004 12:08:45]

#

Kill "c:\Turhatidosto.exe"

Bill Keltanen [22.05.2004 12:12:34]

#

Tossa kai on jotain erroreita (semmosta kuullu) ettei aina toimi.. mut kyllä se mulla vaan wörkkii

CoDeR [22.05.2004 12:16:09]

#

Kiitti, enpä tullu ajatelleeks :D

CoDeR [22.05.2004 12:16:27]

#

kyl se toimii

CoDeR [22.05.2004 12:20:21]

#

tulipa tässä nyt mieleen et jos mulla on koneella esim semmonen biisi ku vaik pimputus.mp3, ja tiiän et se on c asemalla, mut en tiedä missä siellä ni miten sen sais etittyy sielt? (vb:llä tehdyn ohjelman kautta)

tuomas [22.05.2004 12:22:20]

#

Ja jos nyt sattuisi käymään niin että sinun täytyisi poistaa kokonainen hakemisto niin se onnistuu näin:
RmDir "c:\Turhahakemisto"

CoDeR [22.05.2004 12:25:16]

#

hmm... mitä niinku meinaat tol hakemistolla? :D

CoDeR [22.05.2004 12:27:40]

#

ja tota mites se sit käy jos haluu poistaa niinku kokonaisen kansion ni pitääks siihen laittaa niinku C:\turhakansio.(mitä tähän?) .. vai miten se menee?

tsuriga [22.05.2004 12:27:55]

#

hakemisto on hakemisto? ne keltaset kansiot? Ohjelmointiputkassa on hyvä hakemisto tsekkaa sieltä. Vinkki ChDir & Dir.

EDIT: Ootko paljonki ite yrittäny noita vääntää? Käytä sitä Muokkaa-nappulaa, mmkay?
Siellä hakemistossa ei saa olla tiedostoja, katso
https://www.ohjelmointiputka.net/hak/?kieli­=Visual Basic . Eli jos tahdot poistaa kansion ni poista eka tiedostot sit kansio.

Ps. en oo koodannu yhtään VB:llä :) (, joka osoittaa hyvin hakemiston tehokkuuden)

CoDeR [22.05.2004 12:30:26]

#

olen ja sen takia aattelin kysyy viisaimmiltani neuvoa.

CoDeR [22.05.2004 12:32:32]

#

eikä niinku millää pahalla mut ei toi RmDir... ainakaa kansioita poista.

tuomas [22.05.2004 12:57:57]

#

joo pääs unohtumaan että siellä ei saa olla mitään tiedostoja kun se poistetaan.
Käytä ensin tota Kill käskyä poistamaan jokin turhatiedosto hakemistosta ja sitten jos tuo kyseinen hakemisto tyhjä (eli turha) voit poistaa sen komennolla rmdir.
Kannattaa kuitenkin tehdä jokin aliohjelma mikä tarkistaa ettet mene poistamaan mitään tärkeää tiedostoa.

Tiha [22.05.2004 16:37:38]

#

DIR:illäkin löytyy , tässä API esimerkki tiedoston polun etsintään.

Private Declare Function SearchTreeForFile Lib "imagehlp" (ByVal RootPath As String, ByVal InputPathName As String, ByVal OutputPathBuffer As String) As Long
Private Const MAX_PATH = 260
Private Sub Form_Load()
    Dim temppi As String, ret As Long
    temppi = String(MAX_PATH, 0)
    etsi$ = "VB6.EXE"
    For Sdrive = 67 To 69 'etsi C,D,E :ltä
    ret = SearchTreeForFile(Chr(Sdrive) & ":\", etsi$, temppi)
    If ret <> 0 Then
        MsgBox "File polussa " + Left$(temppi, InStr(1, temppi, Chr$(0)) - 1)
    Exit For
    End If
    Next

    If ret = 0 Then: MsgBox "Ei löytynyt!"
End Sub

CoDeR [22.05.2004 17:01:53]

#

Juu kiitti, tollasta olin vähän ajatellukki. Mutta tota pystyykö tolla etsiä kansiota esim (e:\Uusi kansio)
ja jos voi niin miten?(ei onnistu vissiin tollasenaan) Ja tosta jutusta viel sen verran et jos haluun poistaa jonkin kansion sisällön tietämättä mitä siellä on, niin onko se mahdollista? (->ja sen jälkeen onnistuisi turhan kansion poisto)

CoDeR [22.05.2004 17:12:27]

#

..Ja tuota semmonen juttu vielä että kun ohjelma on etsinyt turhan tiedoston (tolla Tihan esimerkki ohjelmalla)
..niin miten sen saa niin että nappia painamalla kyseinen tiedosto poistuu? (napin koodiinhan se tulee ja varmaan kill komennolla mutta oisko kellään tarkempaa tietoa?)

tuomas [22.05.2004 17:54:19]

#

Järkeäkin saa käyttää!
Tee yksi command buttoni ja yksi textboxi.
avaa vaikka notepad ja tallenna tiedosto nimellä testi.
Odota että ohjelma löytää tiedoston.
Paina command1:stä jolloin tiedosto poistuu

Private Sub Command1_Click()
Kill (Text1.Text)
End Sub

Private Sub Form_Load()
   Dim temppi As String, ret As Long
   temppi = String(MAX_PATH, 0)
   etsi$ = "testi.txt"
   For Sdrive = 67 To 69 'etsi C,D,E :ltä
   ret = SearchTreeForFile(Chr(Sdrive) & ":\", etsi$, temppi)
   If ret <> 0 Then
       MsgBox "File polussa " + Left$(temppi, InStr(1, temppi, Chr$(0)) - 1)
       Text1.Text = Left$(temppi, InStr(1, temppi, Chr$(0)) - 1)
   Exit For
   End If
   Next

   If ret = 0 Then: MsgBox "Ei löytynyt!"
End Sub

CoDeR [22.05.2004 19:49:34]

#

no tota vähän aattelinki mut ei sul oo tullu mieleen kokeilla tota.... siit nimittäin tulee error?

tuomas [22.05.2004 20:30:07]

#

mulla ei tuu.
Tai tulee sen jälkeen kun tiedoston on poistanut.
herjaa sitä että kyseistä tiedostoa ei löydy.

tuomas [22.05.2004 21:17:12]

#

Mitenköhän tuon saisi toimimaan niin että kun se löytää
löytää yhden tiedoston josta löytyy pääte .txt ohjelma lisää sen luetteloon ja jatkaa etsintää?
Olen kokeillut muutamalla tavalla mutta kun ei oikein onnistu..

CoDeR [23.05.2004 11:30:29]

#

Mulla se sillai tummentaa kääntövaiheessa tän: ret = SearchTreeForFile(Chr(Sdrive) ... mut en sit tiiä.
Tosiaan vois totakin juttuu miettii mitä sanoit. Sain jo kerran tehtyyn sellasen et se ettii koneelta kaikki .txt tiedostot... jotai semmostako meinasit?

tuomas [23.05.2004 11:48:09]

#

Kyllä, ohjelma etsisi kaikki ".txt" päätteiset tiedostot ja listaisi ne.

Edit:
tuosta lähettämästäni koodista oli vanhingossa jäänyt puuttumaan nuo private declare function määrittelyt.
Kopioi ne alkuperäisestä koodista.

CoDeR [23.05.2004 12:03:24]

#

Juu tosiaan. :D miksen nyt tollasta tajunnu.

tuomas [23.05.2004 12:10:01]

#

Private Declare Function SearchTreeForFile Lib "imagehlp" (ByVal RootPath As String, ByVal InputPathName As String, ByVal OutputPathBuffer As String) As Long
Private Const MAX_PATH = 260

Private Sub Command1_Click()
Kill (Text1.Text)


End Sub

Private Sub Form_Load()
   Dim temppi As String, ret As Long
   temppi = String(MAX_PATH, 0)
   etsi$ = "Testi.Txt"
   For Sdrive = 67 To 67 'etsi C,D,E :ltä
   ret = SearchTreeForFile(Chr(Sdrive) & ":", etsi$, temppi)
   If ret <> 0 Then
       Text1.Text = Left$(temppi, InStr(1, temppi, Chr$(0)) - 1)
       Exit For
   End If
   Next

   If ret = 0 Then: MsgBox "Ei löytynyt!"
End Sub

Tossa on toimiva koodi.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta