Wer eine ganz bestimmte Dateigruppe sichten will, oder muß, ist gezwungen den TYPE-Befehl entsprechend häufig einzugeben. Diese Monotonie macht natürlich krank und schreit geradezu nach einer Batchdatei:
@echo off cls if %1.==. goto er for %%d in (%1) do type %%d /p goto off :er echo Dateigruppenangabe fehlt ! :off
Ruft man diese Datei mit ALLREAD *.BAT auf, so sollte man alle Batchdateien seitenweise angezeigt bekommen. Doch erste Tests ergaben, das diese Routine nicht unter jeder DOS-Version funktioniert, da es nicht immer die Option /p beim TYPE-Befehl gibt.
Hier die technische Erläuterung:
Zunächst wird nach dem Aufruf geprüft, ob überhaupt eine Dateiengruppe als Parameter %1 angegeben wurde. Entweder springt DOS zur Sprungmarke :er und gibt eine Fehlermeldung aus, oder es fährt mit der FOR-Schleife fort. In dieser verweilt das DOS solange, bis die Menge (%1), also alle Dateien die der Maske entsprechen, die als Parameter übergeben wurde, auf dem Schirm ausgedruckt wurde. Danach entfleucht ALLREAD.BAT kommentarlos zur Sprungmarke :off und stellt die Arbeit ein.
Lars Aschenbach
Für Leseratten und andere neugierige Zeitgenossen war und ist meine ALLREAD.BAT gedacht, die alle Texte des aktuellen Verzeichnisses hintereinander anzeigt. Als ich die erste Version schrieb und beschrieb, wünschte ich mir, das vor der Anzeige des Textes der Name des Textes selbst angezeigt wird. Nun habe ich endlich die Lösung dafür gefunden und daraus eine neue ALLREAD.BAT geschaffen, die speziell für den PoFo gedacht ist:
01: @echo off 02: rem allread.bat - neue PoFo-Version ! 03: if %1.==. %0 *.txt 04: if not exist %1 goto err 05: if exist )%1 echo Klammer ) in Dateinamen verboten ! 06: if exist )%1 goto :>nul 07: if exist ?)%1 echo Klammer ) in Dateinamen verboten ! 08: if exist ?)%1 goto :>nul 09: if exist ??)%1 echo Klammer ) in Dateinamen verboten ! 10: if exist ??)%1 goto :>nul 11: if exist ???)%1 echo Klammer ) in Dateinamen verboten ! 12: if exist ???)%1 goto :>nul 13: if exist ????)%1 echo Klammer ) in Dateinamen verboten ! 14: if exist ????)%1 goto :>nul 15: if exist ?????)%1 echo Klammer ) in Dateinamen verboten ! 16: if exist ?????)%1 goto :>nul 17: if exist ??????)%1 echo Klammer ) in Dateinamen verboten ! 18: if exist ??????)%1 goto :>nul 19: if exist ???????)%1 echo Klammer ) in Dateinamen verboten ! 20: if exist ???????)%1 goto :>nul 21: if not exist c:\bttp\nul.* md c:\bttp 22: if not exist c:\bttp\nul.* goto err 23: if not %fl%.==. set ofl=%fl% 24: if not %fl%.==. if %ofl%.==. goto err 25: :loop1 26: set fl=.. 27: for %%a in (%1) do if not exist c:\bttp\%%a set fl=%%a 28: if %fl%.==... goto loop2 29: rem>c:\bttp\%fl% 30: goto loop1 31: :loop2 32: set fl=.. 33: for %%a in (c:\bttp\*.*) do set fl=%%a 34: if %fl%.==... goto off 35: cls 36: echoÿÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» 37: echoÿº Es folgt die Datei: º 38: echoÿÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ 39: echoÿ 40: echoÿÿÿ%fl% 41: echoÿ 42: pause 43: type %fl% /p 44: if exist c:\bttp\%fl% del c:\bttp\%fl% 45: goto loop2 46: :err 47: if not exist %1 echo Die Dateiengruppe %1 gibt es nicht ! 48: if exist %1 if not exist c:\bttp\nul.* echo Ramdisk C: ist voll ! 49: if not %fl%.==. if %ofl%.==. echo Environmet voll ! 50: :off 51: for %%a in (c:\bttp\*.*) do del c:\bttp\%%a 52: if exist c:\bttp\nul.* rd c:\bttp 53: set fl=%ofl% 54: set ofl=
Zeilennummern nebst Doppelpunkt sind nicht abzutippen, sie dienen nur zur Hilfe beim Abtippen !
Direkt hinter dem o des Befehles ECHO, in den Zeilen 39: bis 41: befindet sich das ASCII-Zeichen 255, das durch folgende Tastendrücke zu erzeugen ist:
<FN>+<N>, <ALT>+<K>, <ALT>+<I>, <ALT>+<I>, <FN>+<N>
Sie ist zwar deutlich umfangreicher geworden, aber auch komfortabler und sicherer als die erste Version.
Sofern im aktuellen Verzeichnis Dateien zu finden sind, die die Extension .TXT besitzen, reicht die Eingabe von ALLREAD aus, um all diese Dateien nacheinander angezeigt zu bekommen.
Möchte man aber alle Batchdateien des aktuellen Verzeichnisses ansehen, so ruft man ALLREAD.BAT durch die Eingabe von ALLREAD *.BAT auf.
Für technisch Interessierte:
Durch die Schleife :LOOP1 werden alle Dateinamen in der Variablen FL gespeichert und diese Namen als Zero-Length-File im Verzeichnis C:\BTTMP abgelegt. Somit wird die ursprüngliche Reihenfolge der Quelldateien in
umgekehrte Reihenfolge gebracht.
Mit der Schleife :LOOP2 wird diese Umkehrung wieder rückgängig gemacht, wobei die Dateinamen erneut in FL gespeichert werden und gleich darauf der dazugehörige Text ausgegeben wird.
Sobald der Text ausgegeben wurde, wird das gleichnamige Zero-Length-File in C:\BTTMP gelöscht, damit in der Zeile 33: die nächste zu zeigende Textdatei in der Variablen FL gespeichert werden kann.
Am Ende wird dann das nicht mehr benötigte Verzeichnis C:\BTTMP gelöscht.
ALLREAD.BAT ist gegen mehrere Fehler gefeiht und sollte Euch entsprechend informieren, wenn einer dieser Fehler auftaucht. Wer dennoch eine Fehlfunktion feststellt, solte mich darüber informieren, damit ich das beim nächsten mal berücksichtigen kann.
Lars Aschenbach