Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 393 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

Piper

Mitglied

Dabei seit: 25.07.2011

Beiträge: 28

 

1 Zum Seitenanfang

Freitag, 12. August 2011, 16:08

Visual Basic - Gesamte Anzahl an Dateien im einem Laufwerk ermitteln

Hallo Leute,

ich benötige für mein projekt die Anzahl von Dateien in einem Laufwerk.
Ich habe mir selbst schon eine rekursive Prozedur gebastelt, die alle Verzeichnisse, angefangen vom Laufwerksbuchstaben, durchgeht und
die dort befindlichen dateien zählt. Das alles dauert relative lang.
Wisst ihr ob man das irgendwie einfacher gestalten kann oder ob windows das in einer datei speichert, aus der man dann auslesen könnte?

Vielen Dank im Voraus :D
 

jegi0605

Routinier

Dabei seit: 10.01.2011

Beiträge: 259

 

2 Zum Seitenanfang

Freitag, 12. August 2011, 18:18

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Public Function FindFiles(ByVal Path As DirectoryInfo) As Integer
        Dim iAnzahl As Integer
 
        If Not Path.Exists Then
            MessageBox.Show("Ungültiger Pfad")
            Return 0
 
        Else
            'Dateien im Ordner
            Dim Files() As FileInfo = Path.GetFiles()
 
            'Ordner im Ordner:
            Dim Dirs() As DirectoryInfo = Path.GetDirectories()
 
            'Dateien zählen
            iAnzahl += Files.Length
 
            'Rekursion
            For i As Integer = 0 To Dirs.Length - 1
                iAnzahl += FindFiles(Dirs(i))
            Next
            Return iAnzahl
        End If
 
    End Function

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »jegi0605« (12. August 2011, 18:18)

 

Piper

Mitglied

Dabei seit: 25.07.2011

Beiträge: 28

 

3 Zum Seitenanfang

Freitag, 12. August 2011, 19:43

so eine ähnliche rekursive prozedur habe ich schon.
gibt es nicht irgendeine andere möglichkeit die gesamtzahl der dateien auf der festplatte zu ermitteln?
so was in der art:

Quellcode

1
2
dim drive as io.driveinfo
label1.text = drive.getfiles.count
 

stfschaefer

Routinier

Dabei seit: 21.08.2010

Beiträge: 252

 

4 Zum Seitenanfang

Freitag, 12. August 2011, 20:19

Ich rate von so einer Funktion ab.

Warum?

Wenn man eine Terabyte-Platte hat und die mit kleinen Files vollgestopft ist, dann glaubt man, dass der Rechner haengengebliebenj ist.
 

Piper

Mitglied

Dabei seit: 25.07.2011

Beiträge: 28

 

5 Zum Seitenanfang

Freitag, 12. August 2011, 21:28

ich wollte das eigentlich nur für den maximumwert einer progressbar benutzen.
dann wollte ich mit einer rekursiven prozedur alle verzeichnisse des eines laufwerks nach einem bestimmten dateinamen durchsuchen.
für jede geprüfte datei wurde dann der wert der progressbar erhöht.
 

jegi0605

Routinier

Dabei seit: 10.01.2011

Beiträge: 259

 

6 Zum Seitenanfang

Freitag, 12. August 2011, 21:55

Lies doch den belegten Speicherplatz der Platte aus.
Dann bei jeder Datei davon abziehen..
 

Piper

Mitglied

Dabei seit: 25.07.2011

Beiträge: 28

 

7 Zum Seitenanfang

Freitag, 12. August 2011, 21:58

hab ich mir auch schon gedacht, aber das ist im gegensatz zur anderen methode eher ungenau.
 

jegi0605

Routinier

Dabei seit: 10.01.2011

Beiträge: 259

 

8 Zum Seitenanfang

Freitag, 12. August 2011, 22:13

Habe hier was gefunden was gehen sollte und auch sehr schnell bei sehr großen Platten ;-)

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim oFSO As New FileSystemObject

Dim oFolder As Folder
 
For Each oFolder In oFSO.GetFolder("C:").SubFolders
  List1.AddItem oFolder
Next
 
' Ausgangsverzeichnis
Set oFolder = oFSO.GetFolder("c:")
 
' Anzahl Dateien im Stammverzeichnis von C:
Dim nCount As Long
nCount = oFolder.Files.Count
MsgBox "Im Verzeichnis C:\ befinden sich " & CStr(nCount) & " Datei(en)."

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »jegi0605« (12. August 2011, 22:13)

 

Piper

Mitglied

Dabei seit: 25.07.2011

Beiträge: 28

 

9 Zum Seitenanfang

Freitag, 12. August 2011, 22:44

erstmal danke für deine arbeit
leider zeigt mir der code, dass ich im meinem c verzeichnis nur 4 dateien, was falsch ist.
habe jetzt mal versucht das ganze mit dem belegtem speicherplatz zu vergleichen, aber progressbar.value akzeptiert nur integer zahlen
da aber die belegte größe den wertebereich einer int-variable überschreitet kriege ich immer eine overflow exception.
wenn ich das ganze dann in kb oder so umrechne, um es zu verkürzen, dauert es natürlich dementsprechend länger.
habt ihr noch ieinen guten einfall?
 

OfficeProjekt

Jungspund

Dabei seit: 26.10.2011

Beiträge: 10

 

10 Zum Seitenanfang

Mittwoch, 26. Oktober 2011, 17:44

Visual Basic - Gesamte Anzahl an Dateien im einem Laufwerk ermitteln

Hallo Piper,

vermutlich wird es dir nicht besonders helfen aber ich habe mal ein Beispiel zum Ermitteln der Dateianzahl mit VBA erstellt. Die Befehle sollten auch in VB verfügbar sein.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
Function FILE_COUNT(ByVal STR_PATH As String) As Long
Dim STR_DATEI As String         	'Zur Speicherung des Dateinamens

STR_DATEI = Dir(STR_PATH)

Do Until STR_DATEI = ""
	FILE_COUNT = FILE_COUNT + 1
	STR_DATEI = Dir
Loop

End Function


Solltest du Fragen oder Probleme bei der Umsetzung in VB haben, dann einfach kurz melden.

Grüße

P.s Die Pfadangabe erfolgt immer in folgender Form: C:\*.*

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »OfficeProjekt« (26. Oktober 2011, 17:44)