PofoWiki

Die ultimative Informationsquelle zum ATARI Portfolio

Benutzer-Werkzeuge

Webseiten-Werkzeuge


hilfe:tipps:sonstiges:tipps:sonstiges:larsaschenbach:allread

ALLREAD.BAT - für Leseratten !

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

Dateiname

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

hilfe/tipps/sonstiges/tipps/sonstiges/larsaschenbach/allread.txt · Zuletzt geändert: 07/09/2006 00:09 (Externe Bearbeitung)