Hallo,
ein tolles Programm, welches ich schon lange nutze ist der Total Commander. Ich möchte es nicht missen.
Folgende Frage:
ich möchte Dateinamen sortieren, die eine gleiche Struktur aufweisen:
beispielsweise:
xxxxyyzzz.xyz
Ist es möglich, die Dateien nach den ersten 4 Stellen (xxxx) oder nach der 5. und 6. Stelle (yy) oder nach der 7., 8. und 9. Stelle (zzz) zu sortieren.
Ich habe mehrere Dateinamen, die eine laufende Nummer und einen Titel beinhalten und diese mal nach den Nummern und mal nach alphabetischer Reihenfolge der Titel sortieren lassen.
Vielen Dank für eventuelle Tipps.
Gruß,
Uwe
Dateien sortieren nach bestimmter Stelle im Namen
Moderators: Hacker, Stefan2, white
Hallo ukatenbr,
um die Dateiliste nach Teilstrings der Dateinamen sortieren zu können, musst Du eine benutzerdefinierte Spaltenansicht anlegen und dort für jeden "Ausschnitt" des Dateinamens eine Spalte konfigurieren. Mit TC-Bordmitteln lassen sich in benutzerdefinierten Spalten zwar Teilstrings darstellen (z.B. Feldinhalt: [=tc.Name:5-6], um die 5-6 Stelle des Dateinamens zu extrahieren), sortiert wird aber dennoch nach dem vollständigen Feldwert. Diese Methode ist für Sortierzwecke also ungeeignet. Lösen lässt sich das Problem mit Plugins, die Teilstrings aus Dateinamen extrahieren können. Hier nur drei Möglichkeiten:
1. wdx_filesys
Nach Installation des Plugins in Deiner benutzerdefinierten Spaltenansicht folgende Spalten einrichten:
Feldinhalt: [=filesys.CutNameStart.4] => Schneidet die ersten 4 Zeichen des Dateinamens ab, liefert also den Dateinamen ab Stelle 5
Feldinhalt: [=filesys.CutNameStart.6] => Schneidet die ersten 6 Zeichen des Dateinamens ab, liefert also den Dateinamen ab Stelle 7
2. regexp_wdx 0.1.0.4
Nach Installation des Plugins regexp.ini editieren...
...und eine benutzerdefinierte Spalte mit Feldinhalt: [=regexp.Result] anlegen.
Dies liefert den Teilstring 5-6 zurück; um den Teilstring 7-9 zu erhalten, Zeile Change="$2" auskommentieren und das ";" vor Zeile ;Change="$3"entfernen. Alternativ: Plugin zweimal unter unterschiedlichem Namen installieren und registrieren. Mit der folgenden, dritten Möglichkeit (Script Content Plugin) lassen sich bis zu 10 Ergebnisse (Teilstrings) gleichzeitig ermitteln.
3. Script Content Plugin 0.2.0.0
Nach Installation des Plugins im Installationsverzeichnis des Plugins eine Datei namens SplitFilenameRegExp.vbs mit folgendem Inhalt anlegen:
Anschließend die script.ini editieren:
Und zuletzt benutzerdefinierte Spalten mit Feldinhalt: [=script.Result], [=script.Result1], [=script.Result2], ..., [=script.Result9] anlegen.
um die Dateiliste nach Teilstrings der Dateinamen sortieren zu können, musst Du eine benutzerdefinierte Spaltenansicht anlegen und dort für jeden "Ausschnitt" des Dateinamens eine Spalte konfigurieren. Mit TC-Bordmitteln lassen sich in benutzerdefinierten Spalten zwar Teilstrings darstellen (z.B. Feldinhalt: [=tc.Name:5-6], um die 5-6 Stelle des Dateinamens zu extrahieren), sortiert wird aber dennoch nach dem vollständigen Feldwert. Diese Methode ist für Sortierzwecke also ungeeignet. Lösen lässt sich das Problem mit Plugins, die Teilstrings aus Dateinamen extrahieren können. Hier nur drei Möglichkeiten:
1. wdx_filesys
Nach Installation des Plugins in Deiner benutzerdefinierten Spaltenansicht folgende Spalten einrichten:
Feldinhalt: [=filesys.CutNameStart.4] => Schneidet die ersten 4 Zeichen des Dateinamens ab, liefert also den Dateinamen ab Stelle 5
Feldinhalt: [=filesys.CutNameStart.6] => Schneidet die ersten 6 Zeichen des Dateinamens ab, liefert also den Dateinamen ab Stelle 7
2. regexp_wdx 0.1.0.4
Nach Installation des Plugins regexp.ini editieren...
Code: Select all
[Regexp]
Rule=Teilstring
[Teilstring]
Find="(.{4})(.{2})(.{3})"
;Change="$1"
Change="$2"
;Change="$3"
Others=0
Dies liefert den Teilstring 5-6 zurück; um den Teilstring 7-9 zu erhalten, Zeile Change="$2" auskommentieren und das ";" vor Zeile ;Change="$3"entfernen. Alternativ: Plugin zweimal unter unterschiedlichem Namen installieren und registrieren. Mit der folgenden, dritten Möglichkeit (Script Content Plugin) lassen sich bis zu 10 Ergebnisse (Teilstrings) gleichzeitig ermitteln.
3. Script Content Plugin 0.2.0.0
Nach Installation des Plugins im Installationsverzeichnis des Plugins eine Datei namens SplitFilenameRegExp.vbs mit folgendem Inhalt anlegen:
Code: Select all
'*** SplitFilenameRegExp.vbs, V1.0, 2009-06-25, van Dusen
'*** Script for Script Content Plugin 0.2
'*** Lev Freidin (c) 2005-2008
'*** http://www.totalcmd.net/plugring/script_wdx.html
'*** http://wincmd.ru/plugring/script_wdx.html
Dim vResult(9)
For i = 0 To 9
vResult(i) = ""
Next
Dim oRegExp, oMatch, oMatches
Set oRegExp = New RegExp
'oRegExp.Pattern = "(.+) - (.+) - (.+)\..*"
'oRegExp.Pattern = "(.{4})(.{2})(.{3})(.*?)\.(.*)"
oRegExp.Pattern = "(.{4})(.{2})(.{3})(.*)\.(.*)"
oRegExp.IgnoreCase = True
oRegExp.Global = True
If oRegExp.Test(filename) Then
Set oMatches = oRegExp.Execute(filename)
Set oMatch = oMatches(0)
For i = 0 To oMatch.SubMatches.Count - 1
vResult(i) = oMatch.SubMatches(i)
Next
End If
content = vResult(0)
content1 = vResult(1)
content2 = vResult(2)
content3 = vResult(3)
content4 = vResult(4)
content5 = vResult(5)
content6 = vResult(6)
content7 = vResult(7)
content8 = vResult(8)
content9 = vResult(9)
Code: Select all
[Script]
Section=SplitFilenameRegExp
[SplitFilenameRegExp]
LongName=0
ParseDirs=1
Script=SplitFilenameRegExp.vbs