Ausgabe Verzeichnisliste+Dateien

26/06/2010 - 17:12 von Michael Depke | Report spam
Hallo,

ich möchte von einem Ordner mit ein paar Tausend Unterverzeichnissen
eine zufàllig sortierte Liste aller Verzeichnisse, sowie die
enthaltenen Files mit Endung xy ausgeben. Zufàllig sortiert sollen aber
nur Verzeichnisse sein, wenn deren Name mit "1" oder "2" beginnt, und
nicht die Dateien darin.

vorhandene Verzeichnisse:

a\1a\1.xy, 2.xy, 3.yz, 4.xy, ...
a\2b\...
a\3c\...
b\1a\...
b\2b\...
b\3c\...
c\1a\...
c\2b\...
c\3c\...

mögliche Ausgabe:

c\1a\1.xy, 2.xy, 4.xy, ...
b\1a\...
a\2b\...
b\1a\...
a\1a\...
c\2b\...

Ich habe natürlich schon gegoogelt, und dabei <http://www.wintotal-
forum.de/index.php?topic2850.0> gefunden, wo jemand für die reine
Auflistung aller Verzeichnisse
dir /a:d/s/b/o:n > dir.txt
vorschlàgt. Funktioniert auch gut (unter W2k/XP hier, Cygwin
vorhanden).
Was fehlt, ist die Einschrànkung auf Verzeichnisse, die bestimmte
Anfangszeichen (1/2)im Namen haben, die zufàllige Sortierung dieser
Verzeichnisse, sowie die Erweiterung der Verzeichnisliste um die (nicht
zufàllig sortierten) enthaltenen Dateien mit bestimmter Extension.

Wàre schön, wenn jemand Lust hàtte, mir weiterzuhelfen.

Gruß
Michael
 

Lesen sie die antworten

#1 Peter Schleif
27/06/2010 - 07:25 | Warnen spam
Michael Depke schrieb am 26.06.2010 17:12 Uhr:

dir /a:d/s/b/o:n> dir.txt

Was fehlt, ist die Einschrànkung auf Verzeichnisse, die bestimmte
Anfangszeichen (1/2)im Namen haben, die zufàllige Sortierung dieser
Verzeichnisse, sowie die Erweiterung der Verzeichnisliste um die (nicht
zufàllig sortierten) enthaltenen Dateien mit bestimmter Extension.



Das wird mit _einem_ DOS-Befehl nicht zu machen sein. Da müsste man
schon eine Batch mit den entsprechenden Kontroll-Strukturen
programmieren. Ich nehme lieber VB-Script, denn dafür habe ich ein
Basis-Script, das alle Ordner, Unterordner und Dateien rekursiv
durchlàuft. Dabei kann man dann auch prüfen, ob Ordner und/oder Dateien
bestimmten Bedingungen entsprechen.

Ich habe es mal an deine Bedürfnisse angepasst und unten notiert. Du
müsstest den Code bitte in eine leere Text-Datei kopieren und mit der
Endung .vbs abspeichern. Außerdem muss die Konstante DIR angepasst
werden. Der Zufalls-Algorithmus ist sicher nicht der beste, sollte aber
für das Durcheinanderwürfeln von ein paar Verzeichnisse genügen.

Peter

' VerzeichnislisteUndDateien.vbs
Option Explicit

Call VerzeichnislisteUndDateien

Sub VerzeichnislisteUndDateien()
Dim arr 'As Variant

Const DIR = "E:\test\zufall"

arr = Array()
Randomize

With CreateObject("Scripting.FileSystemObject")
ListFiles .GetFolder(DIR), arr
.CreateTextFile(DIR & "\liste.txt",True,-1).Write Join(arr,vbCrLf)
End With
End Sub

Sub ListFiles(oFolder, arr)
Dim i 'As Integer
Dim f 'As Variant
Dim subfolder 'As Variant

For Each subfolder In oFolder.Subfolders
If (subfolder.Attributes And 1028)=0 Then ListFiles subfolder,arr
Next

If Left(oFolder.Name, 1) = "1" Or Left(oFolder.Name, 1) = "2" Then
ReDim Preserve arr(UBound(arr) + 1)
i = Int(Rnd * UBound(arr))
arr(UBound(arr)) = arr(i)

arr(i) = ""
For Each f In oFolder.Files
If Right(f.Name,3)=".xy" Then arr(i) = arr(i) & ", " & f.Name
Next
If arr(i) <> "" Then arr(i) = "\" & Mid(arr(i), 3)
arr(i) = oFolder.Path & arr(i)
End If
End Sub
'--

Ähnliche fragen