hilfe:tipps:sonstiges:tipps:sonstiges:larsaschenbach:allread
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | |||
hilfe:tipps:sonstiges:tipps:sonstiges:larsaschenbach:allread [07/09/2006 02:09] – Formatierung. uxt | hilfe:tipps:sonstiges:tipps:sonstiges:larsaschenbach:allread [Unbekanntes Datum] (aktuell) – Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== 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: | ||
+ | <code dos> | ||
+ | @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, | ||
+ | |||
+ | 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, | ||
+ | |||
+ | 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:\\ | ||
+ | <code dos> | ||
+ | 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: | ||
+ | 22: if not exist c: | ||
+ | 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> | ||
+ | 30: goto loop1 | ||
+ | 31: :loop2 | ||
+ | 32: set fl=.. | ||
+ | 33: for %%a in (c: | ||
+ | 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: | ||
+ | 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: | ||
+ | 49: if not %fl%.==. if %ofl%.==. echo Environmet voll ! | ||
+ | 50: :off | ||
+ | 51: for %%a in (c: | ||
+ | 52: if exist c: | ||
+ | 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:\\ | ||
+ | |||
+ | < | ||
+ | |||
+ | 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, | ||
+ | |||
+ | Lars Aschenbach\\ | ||