waldgnarf
Goto Top

VB alle.log rekrusiv suchen

Hallo, ich versuche mit VB alle log-Dateien auf meiner Festplatte zu finden aber sobald der Code am "System Volume Information" Ordner angekommen ist bricht er ab weil der Zugriff verweigert wird.
Gibts da eine Möglichkeit das Problem zu umgehen?

Private Sub TEST_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
   Dim ORDPFA, DATNAM As String

        ORDPFA = "C:\"  
        If Not ORDPFA.EndsWith("\") Then ORDPFA += "\"  
        For Each Me.DATNAM In My.Computer.FileSystem.GetFiles(ORDPFA, FileIO.SearchOption.SearchAllSubDirectories, "*.log")  
            ListBox1.Items.Add(DATNAM.Substring(ORDPFA.Length))
        Next

    End Sub

Gruß waldgnarf

Content-ID: 123634

Url: https://administrator.de/contentid/123634

Ausgedruckt am: 20.11.2024 um 11:11 Uhr

Berrnd
Berrnd 27.08.2009 um 15:07:16 Uhr
Goto Top
Hi,

hilft vielleicht einfach
On Error Resume Next
?

Gruß
Bernd
BCCray
BCCray 27.08.2009 um 15:07:47 Uhr
Goto Top
Servus waldgnarf,

in diesem Ordner werden i.d.R. Informationen für die Systemwiederherstellung gespeichert. Normal ist das auch gut so das du dort keinen Zugriff hast.

Um jedoch Zugriff zu bekommen (sofern du das willst), liefert der Softwaregigant aus Redmond hier die Lösung:
Wie Sie auf den Ordner "System Volume Information" zugreifen können

oder du machst ein on error resume...... und schon gehts trotz des Fehlers weiter

greetz

BCC
waldgnarf
waldgnarf 27.08.2009 um 19:14:38 Uhr
Goto Top
Bei On Error Resume Next bleibt als ergebnis ListBox1 leer.
@ BCCray ich habe alles genau gemacht wie es da stand aber es hat nicht funktioniert.

Gruß waldgnarf
TsukiSan
TsukiSan 28.08.2009 um 04:04:23 Uhr
Goto Top
Hallo waldgnarf,

bei mir hatte es geholfen, wenn ich unter "Ordneroptionen" das Häkchen bei "versteckte Systemdateien ausblenden" aktiviert habe. Somit sind diese Ordner nicht sichtbar für's Programm und es gibt keine Fehlermeldung, bzw. Fehlerauswertung. Geht natürlich nur, wenn du diese Systemordner nicht durchsuchen musst.

Probier mal. Vielleicht hilft es dir.

Gruß
Tsuki
waldgnarf
waldgnarf 28.08.2009 um 08:50:43 Uhr
Goto Top
Mogen, Danke für eure Antworten aber auch das "versteckte Systemdateien ausblenden" und "geschützte Dateien ausblenden" und das deaktivieren der Systemwiederherstellung inklusive Dienst hat nicht funktioniert.

Wenn jemand weiss wo man in dem Code eine If-Anweisung definieren kann wo er dann auf die nächste Datei überspringt währe das Problem ja gelöst.
Meine versuche waren mit diesem Code aber alle schon zum Scheitern verurteilt.

Gruß waldgnarf
TsukiSan
TsukiSan 28.08.2009 um 16:18:51 Uhr
Goto Top
Hi waldgnarf,

nicht aufgeben! Bei mir - WinXP Pro SP2 und Office 2000 Pro - funktioniert bei ausblenden der Systemfiles folgendes ganz gut. Du benötigst einfach WORD dafür. Das ganze ist als VBS geschrieben.

Dim Filter , X, PfadStr

Set objWord = CreateObject("Word.Application")  
Set objDoc = objWord.Documents.Add()
Set objRange = objDoc.Range()
objDoc.Tables.Add objRange,1,1
Set objTable = objDoc.Tables(1)

Filter = inputbox("Bitte geben Sie den Dateifilter ein","Mit Word Dateien suchen und auflisten","*.Test")  
PfadStr = inputbox("Bitte geben Sie den Pfad ein","Mit Word Dateien suchen und auflisten","C:\")  
msgbox "Befehl wird ausgeführt! Bitte warten!",,"Mit Word...."  
objWord.FileSearch.FileName = Filter
objWord.FileSearch.LookIn = PfadStr
objWord.FileSearch.SearchSubfolders = True
objWord.FileSearch.Execute

objWord.Visible = True

Neu = False
For Each objFile in objWord.FileSearch.FoundFiles	
	   if not objFile = "" then x = x + 1  

           If Neu Then objTable.Rows.Add()
           	objTable.Cell(x, 1).Range.text = objFile
           	Neu = True


Next

msgbox "Befehl ausgeführt!Es wurden " & x & " Dateien gefunden und aufgelistet.",,"Mit Word...."  

Set objword = nothing
Set objDoc = nothing
Set objRange = nothing
Set objTable = nothing

Gruß
Tsuki

Ps.: hier sei nochmals Dank an Bastla gesagt, der mir die letzte Ecke rundgeschliffen hatte bei meinem Script!
waldgnarf
waldgnarf 28.08.2009 um 17:58:48 Uhr
Goto Top
Hi, ich habe es auf einem anderen Lösungsweg geschafft und nun sind auch die letzten Fehler behoben.
Also dieser Code löscht Mülldateien von der Festplatte. :
Dim ORDNAM, ORDLIS, ORDPFA, DATNAM As String
    Dim ENDARR() As String = {"*.bad", "*.bak", "*.BAK", "*.bk?", "*.b~k", "*.chk", "*.cln", "*.cnt", "*.cpy", "*.csm", "*.diz", "*.dl_", "*.dmp", "*.ex_", "*.ftg", "*.fic", "*.fts", "*.gid", "*.log", "*.map", "*.old", "*.plg", "*.prv", "*.sbr", "sgr", "*.sik", "*.syd", "*.s~y", "*.thumbs.db", "*.tmp", "*.wbk", "*.wbm", "*.??-", "*.?~?", "*.~de", "*.$$$"}  

    Private Sub LOESCH_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ORDNAM = "C:"  



        Call LOEEND()
        End
    End Sub

    Sub LOEEND()
        For A = 0 To UBound(ENDARR)
            For Each ORDNER As String In IO.Directory.GetDirectories(ORDNAM)
                If Not InStr(ORDNER, "System Volume Information") > 0 Then  
                    ORDPFA = ORDNER
                    If Not ORDPFA.EndsWith("\") Then ORDPFA += "\"  
                    For Each Me.DATNAM In My.Computer.FileSystem.GetFiles(ORDPFA, FileIO.SearchOption.SearchAllSubDirectories, ENDARR(A))
                        On Error Resume Next
                        SetAttr(ORDNER & "\" & DATNAM.Substring(ORDPFA.Length), 0)  
                        Kill(ORDNER & "\" & DATNAM.Substring(ORDPFA.Length))  
                    Next
                End If
            Next
        Next
    End Sub

Ich hoffe das waren alle. face-smile

Gruß waldgnarf