Miten voin ettiä tiedostoja levyltä jollain vb koodilla
en tiedä tavan hyvyydestä mutta jos laittaisi
Open "tiedosto.jku" for input as #1
niin se yrittää lukea. Mutta kun tiedostoa ei olekaan olemassa VB:hän antaa virheilmoituksen. Siihen kohtaan voisi käyttää error handleria että ei avaakkaan tiedosta. Ja josse pystyy sen avaamaan tiedosto on olemassa.
Ei ole hyvä tapa.
WinAPI sisältää funktiot FindFirstFile ja FindNextFile. Niillä saa etsittyä tiedostoja, määriteltyä etsittävän päätteen ja attribuutit jne.
Itse ainakin loin For-silmukan,
Joka käy läpi Dir1:n näytettävät kansiot ja File1n valitun kansion sisällön.
Jos kansion sisällä on tiedosto, joka vastaa nimeltään haluttua, avataan, jos ei jatketaan jne...
Jos haluat tarkistaa löytyykö jostain tietystä paikasta tiettyä tiedostoa, niin se onnnistuu myös DIR-komennolla. Mutta jos todella haluat etsiä koko levyltä tiedosto(j)a, niin parhaat taitavat olla nuo Metabolixin ehdottamat FindFirstFile ja FindNextFile. AllApin kuvaus FindFirstFile:stä.
Esimerkki DIR:n käytöstä
Private Sub Command1_Click() Dim testi1 As String, testi2 As String testi1 = Dir("C:\Temp\", vbDirectory) If testi1 <> "" Then 'jos hakemisto on olemassa, testi1 sisältää pisteen (.) testi2 = Dir("C:\Temp\Testi.txt", vbNormal) If testi2 <> "" Then 'jos tiedosto on olemassa, testi2 sisältää tiedoston nimen MsgBox "Temp-hakemisto löytyy C-asemalta," & vbCrLf _ & "ja se sisällä Testi.txt-tiedostonkin!" Else MsgBox "Temp-hakemisto löytyy C-asemalta," & vbCrLf _ & "mutta se ei sisällä Testi.txt-tiedostoa." End If Else MsgBox "Ei Temp-hakemistoa C-asemalla." End If End Sub
Edit: muotoilua ja linkin tarkistus...
Tässä toinen dir eli command promptinkin käyttö onnistuu..
Private Sub Form_Load() 'Kommentoi käyttiksesi mukaan 'joko ensimmäinen tai toinen prompti prompti = "c:\windows\command.com" '95 / 98 'prompti = "CMD" 'NT /2000 / XP etsi = "calc.exe" ' etsittävä tiedosto tulostiedosto = "c:\testi.txt" ' Output file act = Shell(prompti & " /c dir /s c:\" & etsi & " >" & tulostiedosto, vbHide) ' Etsi tiedosto End Sub
Aihe on jo aika vanha, joten et voi enää vastata siihen.