Mit Hilfe einer Dateimengenregeldatei, kann eine bestimmte Menge von Dateien für die jeweilige Bearbeitung ausgewählt werden.
Die Auswahl betrifft sowohl Verzeichnissnamen, als auch Dateinamen. Es kann also durch bestimmte Regeln verhindert werden, das ein ganzer Unterverzeichnisbaum überhaupt durchsucht wird.
Die Regeldateien sind "normale" Textdateien, durch CRNL getrennt, wie unter Windows/DOS üblich. (notepad).
Kommentarzeile werden mit einem "#"-Zeichen begonnen. Leerzeilen sind gestattet.
Jede Zeile wird jeweils in einzelne Felder zerlegt (hhlist2_from_string). Das 1. Feld bestimmt das Kommando, die restlichen Felder haben je nach Kommando unterschiedliche Bedeutung.
Das Ergebnis einer Regel kann entwerde 1 oder 0 sein, oder aber ein Verweis (goto) auf eine andere Regelgruppe in der gleichen Datei sein. Begonnen wird immer mit der Bewertung der Regelgruppe Namens "-". Liefert eine Regel ein Ergebnis, kann außerdem bestimmt werden, ob weitere Regeln des gleichen Namens Bewertet werden sollen, oder nicht. Letztlich können alle Dateinamen, die noch nicht getroffen wurden auf ein bestimmtes Ergebnis gesetzt werden.
Achtung: Da die Zeilen selbst jeweils mit "hhlist2_from_string" interpretiert werden, müssen "\"-Zeichen doppelt geschrieben werden.
Achtung: Sollen Zeichen (z.B.), die innerhalb eines Regulären Ausdrucks Sonderfunktionen haben, als normale Zeichen des Dateinamens angesehen werden, müssen die durch ein bzw. zwei "\"-Zeichen maskiert werden.
Achtung: Werden Leerschritte innerhalb einer Regulären Ausdrucks verwendet, muß der ganze Ausdruck in ()-Klammern gesetzt werden.
Kommentar
rule Regelgruppe RegExp Result IgnoreCase Continue
Eigentliche Regeldefinition.
Regelgruppe gibt an, zu welcher Regelgruppe diese Regel gehört. Begonnen wird immer mit der Bewertung der Regelgruppe "-".
RegExp definiert einen Regulären Ausdruck. Der Verzeichnis oder Dateiname wird jeweils mit diesem Regulären Ausdruck vergliechen. Trifft der Ausdruck zu, wird das Ergebnis gesetzt.
IgnoreCase bestimmt, ob Groß/Kleinschreibung ignoriert werden soll. 1=Ignorieren 0=Relevant. Initialwert=0.
Continue gibt an, ob mit der Bewertung der nachfolgenden Regeln fortgefahren werden soll (1) oder nicht (0). Initialwert=0, also: Trifft die Regel zu, gillt das Result als Gesamtergebnis.
Result Ergebnis dieser Bewertung. 1=Datei/Verzeichnis bearbeiten. 0=Datei/Verzeichnis nicht bearbeiten. #Name=Fortsetzen mit der 1. Regel der Regelgruppe "Name".
Zur Beurteilung werden die Namen von Verzeichnissen und Dateien jeweils vereinheitlicht:
Verzeichnisnamen enthalten keine "\"-Zeichen sondern "/"-Zeichen, und enden immer mit einem "/".
Enddateinamen enthalten keine "\"-Zeichen sondern "/"-Zeichen, und beginnenm, nach dem Verzeichnisnamen, immer mit einem "/".
Initialwert Regelgruppe Result
Regelgruppe gibt an, zu welcher Regelgruppe diese Regel gehört. Begonnen wird immer mit der Bewertung der Regelgruppe "-".
Result Ergebnis dieser Bewertung. 1=Datei/Verzeichnis bearbeiten. 0=Datei/Verzeichnis nicht bearbeiten
Gegeben sei folgende Verzeichnis/Dateistruktur:
d:\temp\a
d:\temp\a\b
d:\temp\a\b\x.pg
d:\temp\a\b\x.txt
d:\temp\a\y.pg
d:\temp\a\y.gif
d:\temp\z.pg
Beurteilte Datei- und Verzeichnisnamen:
a/
a/b/
a/b/x.pg
a/b/x.txt
a/y.pg
a/y.gif
/z.pg
Jeweils ausgeführtes Kommando:
hhcp "dirlist d:\temp - Regeldatei"
Regeldatei:
rule - \\.pg$ 1 1
Im Klartext: Match auf alle Dateien mit der Endung ".pg". Groß/Kleinschrift im Dateinamen ignorieren. Ergebnis: 1 (Verarbeiten).
Ergebnis:
d:\temp\z.pg
Begründung:
Da die Verzeichnisse "a/" und "a/b/" von keiner Regel erfasst werden, können nur Dateien des Hauptverzeichnisses Berücksichtigung finden.
Regeldatei:
rule - a/$ 1 1
rule - \\.pg$ 1 1
Im Klartext: Match auf alle Dateien mit der Endung ".pg". Groß/Kleinschrift im Dateinamen ignorieren. Ergebnis: 1 (Verarbeiten). Unterverzeichnis a mit berücksichtigen.
Ergebnis:
d:\temp\a\y.pg
d:\temp\z.pg
Begründung:
Da nun das Unterverzeichnis "a" mit berücksichtigt wurde, werden auch Dateien in diesem Unterverzeichnis berücksichtigt.
Regeldatei:
rule - a/ 1 1
rule - \\.pg$ 1 1
Ergebnis:
d:\temp\a\b\x.pg
d:\temp\a\b\x.txt
d:\temp\a\y.gif
d:\temp\a\y.pg
d:\temp\z.pg
Begründung:
Es wrden nun alle Dateien und Verzeichnisse unterhalb von "a/" durch dir erste Regel getroffen.
Regeldatei:
rule - a/$ 1 1
rule - a/.+/$ 1 1
rule - \\.pg$ 1 1
Ergebnis:
d:\temp\a\b\x.pg
d:\temp\a\y.pg
d:\temp\z.pg
Begründung:
Regeln 1 und 2 sorgen dafür, das das Verzeichnis "a" und alle seine Unterverzeichnisse durchsuct werden. Regel 3 findet dann in diesen Verzeichnissen alle Dateien mit der Endung ".pg".
Regeldatei:
rule - a/ #RegelA 1
rule - \\.pg$ 1 1
rule RegelA a/$ 1 1
rule RegelA a/.+/$ 1 1
rule RegelA \\.gif$ 1 1
Ergebnis:
d:\temp\a\y.gif
d:\temp\z.pg
Begründung:
Regeln 1 sorgt dafür, das für alle Verzeichnisse und Dateien unterhalb von "a/" die Regel "RegelA" gillt. RegelA sucht in allen Verzeichnissen und Unterverzeichnissen nach Dateien mit der Endung ".gif". Regel 2 sucht im Hauptkatalog nach Dateien der Endung ".pg".