Trick 52: Dateien abklappern

Aufgabe: Schnell mal eben eine Anzahl Dateien durchsehen oder sonstwas
         mit jeder einzelnen davon machen.

Warum: Gelegentlich will man nicht nur eine einzelne Datei,
       sondern gleich ein ganzes Bündel irgendwie behandeln. 

Lösung
Man braucht drei Funktionen:

1. :dirlist
   Die Zusammenstellung der Namensliste der Dateien
   Dabei kann es sein, daß diese nicht alle auf nur einem Verzeichnis
   liegen, sondern auch welche auf einem oder mehreren Unterverzeich-
   nissen. Die Funktion soll ein bequemes Zusammenstellen einer solchen
   Liste ermöglichen.

2. :firstname
   Aufruf der ersten Datei (d.h. ihres Namens)

3. :nextname
   Aufruf der nächsten Datei. Mit Feststellung, ob es keine mehr gibt.

Diese Funktionen wurden in eine Datei  dirlist.inc  verpackt.
Richtig einfach sind diese Funktionen nicht, weil allerhand Rand-
bedingungen zu berücksichtigen sind.
Die Nutzung ist jedoch ganz leicht. Hier ganz knapp das Strickmuster,
das man auch für eigene Zwecke noch modifizieren kann:
(Stellen mit ... sind darin frei gestaltbar)

  -----------------------------------------------------
  Flag #udS setzen: Unterverzeichnisse mitverarbeiten
  (wenn nicht gewünscht, dann die 1 weglassen)
#udS 1
  Flag #udE setzen: Liste vor Verarbeitung noch editieren
  (in einem aresqa-Fenster) Sonst die 1 weglassen
#udE 1

  Namensmuster in iV vorbereiten, z.B. c:/allegro/*.apr
var ...
  Und nun kommen die Funktionen:
  1. Dateiliste dazu erstellen
perf dirlist
if not $DL mes Keine Datei gefunden;end

  2. Ersten Namen in iV kopieren
perf firstname
if "" mes Abbruch oder keine Datei gefunden;end

  Schleife. Dateiname steht in iV
:lp
  Hier einfuegen, was mit der Datei passieren soll
...

  3. Naechsten Namen in iV kopieren
perf nextname
if "" jump ende
jump lp

:ende
  Ende-Aktion nach Verarbeitung der letzten Datei
...
end
  Unterprogramm einbinden
include dirlist.inc
  ------------------------------------------------------

Tips:
Die Liste der Dateien ist nach Ablauf immer noch in der
Variablen  $DL, wo man sie sich anschauen oder für andere
Zwecke weiterverwenden kann. $DL wird erstellt in der
Unterfunktion :dirlist, d.h. man braucht nur diese auszuführen,
wenn man nichts anderes als diese Variable braucht.

Die Liste kann, weil $DL erhalten bleibt, auch mehrfach mit
"perf firstname / perf nextname ..." abgearbeitet werden.

Anwendungsbeispiel:
Ein FLEX namens  DIRLIST.FLX  zeigt: Man kann sich Listen
bestimmter Dateitypen zusammenstellen und dazu dann eine
alphab. Liste der Dateien mit Datum, Größe und den ersten
drei Zeilen erstellen lassen.