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 wuáte, 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" fr TypeTree. Im Grunde be-
steht es nur aus einer Befehlszeile, aber wer gern programmiert,
weiá, wie sehr es Spaá macht, auch das "auáenherum" zu gestal-
ten. Es finden sich kurze Erkl„rungen bei den wichtigsten und
noch nicht besprochenen Funktionen.

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

@ECHO OFF                               ;Ausschalten der 
                                        ;Befehlsanzeige
CLS                                     ;Bildschirm l”schen
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 GrӇe 
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 Parameterbergabe stattgefunden hat,
die Stapelverarbeitung sofort zur Sprungmarke ":END" spring,
denn der Aufruf von TypeTree muá schlieálich lauten:
 
 TT [Verzeichnis]

"[Verzeichnis]", daá optional ist, IST der 1. Parameter. Im Pro-
gramm selbst wird "[Verzeichnis]" mit "%1" belegt. Demnach w„re
der Programmname IMMER STANDARDMŽáIG "%0". Im internen Ablauf
hieáe das Ganze also

 IF [Verzeichnis].==. GOTO END

wobei man fr Verzeichnis die šbergabe einsetzen muá. Lautet der
Aufruf also

 TT DOS

hieáe die Abbruchberprfung

 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. Parameterber-
gabe stattfindet, lautet die šberprfung

 IF .==. GOTO END

Sie w„re wahr und man wrde 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 šberprfung der Bedingung, nach dem Motto "Doppelt ge-
moppelt h„lt 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, fr den ja das Verzeichnis verwendet,
    also eingesetzt wird, das bei TT [Verzeichnis] mit angege-
    ben wird.
 3: /S ist ein spezieller 2.Parameter fr 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 n„mlich 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 GrӇe der
    Zahlen nach, die von FIND kommen. So kommt die letzte und
    auch gr”áte Zahl, die alles aufsummiert, zum Schluá.
 9: Dies ist ein Umleitungszeichen. Die Ausgabe wird also nicht,
    wie es normal w„re, 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 n„chste Mal gibt's was mehr ber die internen Variablen
    und deren Verwaltung, sowie einigen Abbruchbedingungen mehr.