

Ein hilfreiches Batch-Utility


Folgt mir, oh Leser in die Tiefen (ha,ha) der Batch-Programmie-
rung! Wer hat das Problem nicht auch schon mal gehabt, da er 
nicht wute, wieviel Speicherplatz ein Verzeichnis samt seiner
Unterverzeichnisse einnimmt ? Um das zu erfahren, werden wir uns 
eines Batch-Progs bedienen. Es befindet sich im Verzeichnis 
\SOURCES unter dem Namen "TT.BAT" fr TypeTree. Im Grunde be-
steht es nur aus einer Befehlszeile, aber wer gern programmiert,
wei, wie sehr es Spa macht, auch das "auenherum" zu gestal-
ten. Es finden sich kurze Erklrungen bei den wichtigsten und
noch nicht besprochenen Funktionen.

*****************************************************************

@ECHO OFF                               ;Ausschalten der 
                                        ;Befehlsanzeige
CLS                                     ;Bildschirm lschen
IF %1.==. GOTO END                      ;siehe weiter unten
:HELP                                   ;Sprungmarke
ECHO TypeTree V1.0 by JR                ;Textausgabe mit ECHO
ECHO.                                   ;Leerzeile
ECHO.
ECHO TypeTree zeigt die Gre 
ECHO eines Verzeichnisses an. 
ECHO Auch Unterverzeichnisse 
ECHO werden mitgerechnet !
ECHO.
ECHO Taste...
PAUSE > NUL                             ;Auf Tastendruck warten,                        
                                        ;Hinweismeldung nach
                                        ;"nirgendwohin" leiten
:START
CLS
ECHO. 
ECHO. 
ECHO. 
DIR %1 /S | FIND "Datei(en)" | SORT   > C:\DAT       ;siehe wei-
                                                     ;ter unten
TYPE C:\DAT | MORE
ECHO.
ECHO 
ECHO.
PAUSE 
DEL C:\DAT
:END
CLS
ECHO.

*****************************************************************

Es gibt eine neue Anweisung:
 
 IF %1.==. GOTO END

Sie bewirkt, da wenn keine Parameterbergabe stattgefunden hat,
die Stapelverarbeitung sofort zur Sprungmarke ":END" spring,
denn der Aufruf von TypeTree mu schlielich lauten:
 
 TT [Verzeichnis]

"[Verzeichnis]", da optional ist, IST der 1. Parameter. Im Pro-
gramm selbst wird "[Verzeichnis]" mit "%1" belegt. Demnach wre
der Programmname IMMER STANDARDMIG "%0". Im internen Ablauf
hiee das Ganze also

 IF [Verzeichnis].==. GOTO END

wobei man fr Verzeichnis die bergabe einsetzen mu. Lautet der
Aufruf also

 TT DOS

hiee die Abbruchberprfung

 IF DOS.==. GOTO END

Da dies NICHT der Fall ist, wird nicht zur :END-Marke gesprungen.
Doch warum das ganze Theater mit "." und den zwei "=" ? Nun, eine
Stapelverarbeitung kann ein einfaches Leerzeichen (Space) nicht 
verarbeiten, genauso, wie es bei ECHO der Fall war. Deshalb mu
man das Leerzeichen also ersetzen. Wenn keine 1. Parameterber-
gabe stattfindet, lautet die berprfung

 IF .==. GOTO END

Sie wre wahr und man wrde direkt ans Ende gelangen. Man mu 
nicht unbedingt einen Punkt benutzen, man kann eine beliebige
Zeichenkette verwenden:

 IF DOShallo==hallo GOTO END             
 bzw.
 IF hallo==hallo GOTO END

Nur mit dem "." geht es am einfachsten. Die zwei "=" dienen zur
ABSOLUTEN berprfung der Bedingung, nach dem Motto "Doppelt ge-
moppelt hlt besser". Man mu sich damit abfinden.

Jetzt zur eigentlichen Befehlszeile: Man macht sich dort einfach
die normalen DOS-Befehle zu Nutze und verkettet diese mit dem
sog. "Pipe-Symbol" ( | ).

 DIR  %1  /S  |   FIND "Datei(en)" |   SORT   >  C:\DAT
  
  ^1  ^2  ^3  ^4   ^5      ^6      ^7    ^8   ^9   ^10

 1: Aufruf des Befehls DIR mit den Parametern %1 und /S
 2: %1 ist ein Parameter, fr den ja das Verzeichnis verwendet,
    also eingesetzt wird, das bei TT [Verzeichnis] mit angege-
    ben wird.
 3: /S ist ein spezieller 2.Parameter fr den Befehl DIR. Er be-
    wirkt, da auch Unterverzeichnisse des angegeben Verzeich-
    nisses mit aufgelistet werden.
 4: Dies ist das Pipe-Symbol. Die Ausgabe von DIR wird mit FIND
    verkettet. Die Ausgabe von DIR wird also mit FIND bearbeitet.
 5: Dies ist der Befehl FIND. Er sucht aus der Ausgabe von DIR
    die Zeilen heraus, die die Zeichenkette "Datei(en)" enthal-
    ten. In diesen Zeilen steht nmlich auch immer der Platzver-
    brauch der Unterverzeichnisses.
 6: Die Zeichenkette, nach der FIND suchen soll.
 7: Wieder ein Pipe-Symbol. Die Ausgabe von FIND wird an SORT
    weitergeleitet, verkettet. Es findet also nach und nach eine
    Filterung statt.
 8: Mit SORT wird die Ausgabe sortiert, und zwar der Gre der
    Zahlen nach, die von FIND kommen. So kommt die letzte und
    auch grte Zahl, die alles aufsummiert, zum Schlu.
 9: Dies ist ein Umleitungszeichen. Die Ausgabe wird also nicht,
    wie es normal wre, auf dem Bildschirm ausgegeben, sondern
    in die Datei "C:\DAT" umgeleitet. Diese Datei kann man nach-
    her mit TYPE [Dateiname] anzeigen.
 10:Dies ist der Dateiname, der besagt, wohin die Ausgabe von 
    SORT geleitet werden soll.

So, das wars. Wenn es noch Fragen gibt, schaut einfach in die
Hilfe von DOS oder fragt mich.

                               Eric der Schreckliche

PS: Das nchste Mal gibt's was mehr ber die internen Variablen
    und deren Verwaltung, sowie einigen Abbruchbedingungen mehr.


