[gelöst] In den Unterordnern nach den Dateien suchen.

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: [gelöst] In den Unterordnern nach den Dateien suchen.

Danke

von fichte.buche » Mi, 12.04.2006 17:49

Danke Michael,

Es funktioniert wunderbar. Jetzt werde ich mich daran machen, daß ich das Makro auch verstehe, denn hier sind Sachen enthalten die ich bislang noch nicht kannt.

Viele Grüße
Schorsch

von ykcim » Do, 30.03.2006 14:22

Hi,

ich habe das ganze noch verbessert.

Code: Alles auswählen

sub testdir
 dim liste(10000) as string
 m=getdirs(liste(),0,"c:\programme")
   For i=0 to m-1
'    msgbox liste(i)
   next i  
   msgbox m
end sub



function getdirs( liste(),z, folder) as integer
   sFolderUrl = ConvertToUrl( Folder ) 
   oSimpleFileAccess = createUnoService( "com.sun.star.ucb.SimpleFileAccess" )
   aFolders = oSimpleFileAccess.getFolderContents( sFolderUrl,true )
   For i = LBound( aFolders ) To UBound( aFolders )
     sFile = aFolders( i )
     If oSimpleFileAccess.isFolder( sFile ) Then
        getdirs( liste(),z, sFile)
      Else
        liste(z)=sfile
        z=z+1
     end if    
   next i        
   getdirs=z 
end function

Durch die Rekursion ist jetzt die Tiefe der Unterordner egal, bzw hängt vom BS ab.

mfg
Michael

von ykcim » Mi, 29.03.2006 13:00

Hallo Peter

pass bitte auf wenn Du Code aus dem neuen StarBasic Handbuch hier kopierst. In dem ganzen Dokument stehen dummerweise statt doppelten Hochkomma nur einfache Hochkomma.
Wenn sich jemand den Code rauskopiert geht dann der Code nicht sofort.

mfg
Michael

von ykcim » Mi, 29.03.2006 12:54

@Schorsch

Ich habe die Lösung, die ich mal verwendet habe, gefunden.

Code: Alles auswählen

Sub DirSubs
   Dim liste(10000) as string
   z=0
   sFolder = "F:\"
   sFolderUrl = ConvertToUrl( sFolder ) 
   oSimpleFileAccess = createUnoService( "com.sun.star.ucb.SimpleFileAccess" )
   aFolders = oSimpleFileAccess.getFolderContents( sFolderUrl,true )
   For i = LBound( aFolders ) To UBound( aFolders )
     sFile = aFolders( i )
     If oSimpleFileAccess.isFolder( sFile ) Then
        subfolders=oSimpleFileAccess.getFolderContents( sfile,true ) 
         For i1 = LBound( subFolders ) To UBound( subFolders )         
              subFile = subFolders( i1 )
               If oSimpleFileAccess.isFolder( subFile ) Then
                 sub2folders=oSimpleFileAccess.getFolderContents( subfile,true )
                  For i2 = LBound( sub2Folders ) To UBound( sub2Folders )        
                     
                     sub2File = sub2Folders( i2 )
                     
                     liste(z)=sub2file
                     z=z+1
                  Next i2
               else        
               liste(z)=subfile   
               z=z+1
              end if
         next i1     
        Else
        liste(z)=sfile
        z=z+1
     end if    
   next i        
   For i=0 to z-1
    msgbox liste(i)
   next i 
End Sub
Das geht bis zu zur zweiten Ebene. Hat mir damals gelangt. Weitere Ebenen müssen nur eingefügt werden.

mfg
Michael

von pmoegenb » Mi, 29.03.2006 09:36

Hallo Schorsch,

für Unterverzeichnisse ist von SUN folgender Code als Beispiel im neuesten StarBasic-Handbuch aufgeführt:

Code: Alles auswählen

Sub ShowDirs 
Dim NextDir As String 
Dim AllDirs As String
AllDirs = ′′
NextDir = Dir(′C:\′, 16) 
While NextDir <> ′′
AllDirs = AllDirs & Chr(13) & NextDir 
NextDir = Dir 
Wend 
MsgBox AllDirs 
End Sub

von fichte.buche » Mi, 29.03.2006 09:14

Danke Michael,

Hab so einiges durchgelesen über das Thema durchsuchen von Unterordnern, aber bin noch nicht fündig geworden. Kannst du mit bitte einen Denkanstoß geben, wie ich so etwas vielleicht aussehen könnte?
Danke

mfg
Schorsch

von ykcim » Mo, 27.03.2006 23:33

Hi,
es geht nicht. Mir Dir$ lassen sich keine Unterverzeichnisse einlesen.
Du kannst aber die Verzeichnisse auslesen und selber in Unterverzeichnisse wechseln.
Ich habe dafür mal eine Lösung geschrieben. Ich kann morgen im Büro danach schauen.

mfg
Michael

[gelöst] In den Unterordnern nach den Dateien suchen.

von fichte.buche » Mo, 27.03.2006 17:50

Hallo,

Ich sollte in alle Unterordner gewisse Dateien suchen.
Wollte dies folgendermaßen machen

Code: Alles auswählen

Unterpfad = Dir("c:\test\", 16)
While Unterpfad <> ""
	Datei = Dir("c:\test\"& Unterpfad &"\", 0)
	While Datei <> ""
		Code = Code & Chr(13) & Datei
		Datei = Dir
	Wend
Unterpfad = Dir
Wend
msgbox Code
Leider wird dabei der Ordner "c:\test\" durchsucht und nicht die gewünschten Unterordner.

Ich vermute, daß es daran liegt, daß ich für das Suchen der Dateien und der Unterordner "Dir" verwende. Aber was kann ich hier sonst verwenden?

Vielen Dank
Schorsch

Nach oben