Das Magazin für Funk Elektronik · Computer
Das Magazin für Funk Elektronik · Computer
Das Magazin für Funk Elektronik · Computer
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
auch nach diesem und mit<br />
sort /+31 < telefon<br />
(wo<strong>für</strong> auch immer) nach der Telefonnummer<br />
sortieren. Dabei ist zu beachten, daß<br />
SORT nach dem ASCII-Kode sortiert und<br />
demnach die Ziffern vor den Buchstaben<br />
kommen. Außerdem unterscheidet SORT<br />
nicht zwischen Groß- und Kleinbuchstaben<br />
und kann keine Dateien größer als<br />
64 KB sortieren, was <strong>für</strong> den Normalgebrauch<br />
allerdings belanglos ist. Wenn Sie<br />
in der Datei CONFIG.SYS mit der Zeile<br />
country = 49,,c:\dos\country.sys<br />
die Ländereinstellungen <strong>für</strong> Deutschland<br />
gewählt haben, werden auch Umlaute wie<br />
ä und das ß beachtet.<br />
■ FIND<br />
Um aus unserer (ob sortierten oder nicht)<br />
Datenbank blitzschnell die gewünschte<br />
Information zu holen, ist FIND zuständig.<br />
FIND gibt aus einer geschluckten Textdatei<br />
nur die Zeilen aus, die einen gewünschten<br />
Suchbegriff enthalten. Da dieser<br />
Begriff auch ein Fragment sein kann,<br />
ist der Filter äußerst flexibel. Mit<br />
find “Ralf“ telefon<br />
werden die Telefonnummern aller gespeicherten<br />
Ralfs offenbart; aber auch alle, die<br />
zum Beispiel in einer Ralfsberger Straße<br />
wohnen. Ab MS-DOS 5.0 ermöglicht die<br />
Option /i das Ignorieren der Groß- und<br />
Kleinschreibung, so daß man getrost auf<br />
die Shift-Taste verzichten kann. Demnach<br />
könnte eine Batchdatei zum Suchen beliebiger<br />
Informationen daraus so aussehen:<br />
@find /i “%1“ c:\telefon<br />
was sich der Kürze wegen auch hervorragend<br />
als schnelles DOSKey-Makro eignet:<br />
doskey tel = find /i “$1“ c:\telefon<br />
Wenn Sie noch $1 durch $* ersetzen, darf<br />
Ihr Suchstring sogar Leerzeichen enthalten.<br />
Jetzt ist der Vorteil unserer Telefon-<br />
Datenbank gegenüber einem Datenbankprogramm<br />
deutlich zu erkennen: Sie geben<br />
lediglich<br />
tel Ral<br />
ein, um die Telefonnummer von Ralf/Ralph<br />
zu erhalten. Bei einer richtigen Datenbank<br />
müßten Sie erst das Programm starten, die<br />
Telefondatei laden und einen Suchbefehl<br />
eingeben.<br />
Eine Batch-Datei sollte sie in ein Verzeichnis<br />
plazieren, das in der PATH-Variable<br />
erwähnt wird, um ein schnelles Informieren<br />
aus allen Verzeichnissen heraus zu gewährleisten.<br />
Der Suchbegriff (ohne Leerzeichen)<br />
wird dann als Kommandozeilen-<br />
parameter übergeben, also genauso wie<br />
beim Makro.<br />
Auch eine verknüpfte Suche, etwa nach<br />
allen Ralfs, deren Telefonnummer eine 88<br />
enthält, ist möglich:<br />
find “Ralf“ telefon | find “88“<br />
Beachten Sie dabei die Schreibweise der<br />
zweifachen Filterung bei Verwendung des<br />
Pipe-Symbols. Mit der Option /v (ausschließendes<br />
Suchen) fahnden Sie letztlich<br />
nach allen Ralfs, deren Nummer keine 88<br />
enthält:<br />
find “Ralf“ telefon | find /v “88“<br />
Leider unterstützt FIND (wie alle Filter)<br />
keine Platzhalter, es lassen sich also nicht<br />
mehrere Dateien durchsuchen. Mit einem<br />
Trick, Verwenden einer FOR-Schleife, läßt<br />
sich jedoch Abhilfe schaffen. Die Zeile<br />
for %a in (*.txt) do find “Ralf“ %a<br />
sucht alle *.TXT-Dateien nach der Zeichenkette<br />
Ralf ab; hinter der DO-Anweisung<br />
wird der Platzhalter %a nach und nach<br />
durch alle gefundenen *.TXT-Dateien ersetzt<br />
und der FIND-Befehl ausgeführt. In<br />
Batchdateien muß dem %a noch ein weiteres<br />
Prozentzeichen vorangestellt werden:<br />
for %%a in (*.txt) do find “Ralf“ %%a<br />
Letztlich kann FIND mit der Option /c<br />
lediglich die Anzahl der gefundenen Zeilen<br />
und mit /n jede Zeile numerieren:<br />
find /c “ “ c:\autoexec.bat<br />
find /n “ “ c:\autoexec.bat<br />
Um die Zeilenzahl der gesamten Datei zu<br />
bestimmen, wurde davon ausgegangen,<br />
daß in jeder Zeile einfach mindestens einmal<br />
ein Leerzeichen “ “ vorhanden ist, was<br />
allerdings nicht immer vorausgesetzt werden<br />
kann. Besser ist es in diesem Fall, nach<br />
einer Zeichenkette zu suchen, die jedenfalls<br />
nicht gefunden wird („$%&“) und das<br />
ausschließende Suchen (/v) zu verwenden.<br />
■ Error-Level<br />
Ab MS-DOS 6.0 liefert FIND einen Error-<br />
Level (oder Exitcode) zurück, aus dem hervorgeht,<br />
ob die Suche erfolgreich war. Er<br />
ist eine Zahl, die jedes Programm nach<br />
Beendigung an DOS übergeben kann. Meistens<br />
sagt 0, daß alles o.k. ist und 1 weist<br />
auf einen Fehler hin – etwa, wenn Parameter<br />
fehlen. Die einzige Möglichkeit,<br />
einen Error-Level unter DOS abzufragen,<br />
ist die Anweisung IF ERRORLEVEL. Danach<br />
liefert sie die Abfrage wahr, wenn der<br />
Error-Level gleich oder größer als die angegebene<br />
Zahl ist.<br />
■ Verändern, Hinzufügen, Löschen<br />
Einen Nachteil hat die hier beschriebene<br />
Art der Dateiverwaltung schon: Für das<br />
Parameter <strong>für</strong> SORT<br />
/r rückwärts sortieren (Z bis A)<br />
/+x ab Spalte x sortieren<br />
MS-DOS<br />
Parameter <strong>für</strong> FIND<br />
/c nur Anzahl der Zeilen anzeigen<br />
/i Groß/Klein-Schreibung ignorieren<br />
/n vor jede Zeile eine Nummer setzen<br />
/v Zeilen anzeigen, die das zu<br />
Suchende nicht enthalten<br />
Parameter stehen direkt hinter dem Filternamen,<br />
also vor eventuellen Dateinamen.<br />
Editieren der Liste sind Sie auf einen Editor<br />
angewiesen und müssen sich per Suchbefehl<br />
auf die zu bearbeitende Zeile begeben.<br />
Um Einträge hinzuzufügen oder zu löschen,<br />
kommen Sie wieder mit kleinen Batches<br />
hin. Zum Hinzufügen lenkt beispielsweise<br />
die Zeile<br />
echo %1 %2 %3 %4 %5 %6 %7 >> telefon<br />
alle Parameter (o.k. – die ersten sieben; <strong>für</strong><br />
DOSKey besser $*) in die Datei TELE-<br />
FON. Als Batch namens APPEND.BAT<br />
fügen Sie mit<br />
append Neumann Dirk 238881<br />
einen Eintrag hinzu, allerdings nur mit<br />
einem Leerzeichen je Spalte getrennt und<br />
nicht etwa fein säuberlich untereinander<br />
(um das zu automatisieren, fällt mir auf<br />
die Schnelle auch nichts ein...). Sie sollten<br />
allerdings da<strong>für</strong> Sorge tragen, daß die Datei<br />
TELEFON mit einer Leerzeile endet, also<br />
der Cursor nicht auf der letzten Textzeile<br />
steht – sonst kommt der neue Eintrag auch<br />
auf diese Zeile.<br />
Zum Löschen bietet es sich an, die ganze<br />
Datenbank nach allen Einträgen zu durchforsten,<br />
die dem Gesuchten nicht entsprechen,<br />
und das in die Datei TELEFON<br />
zurückzuleiten.<br />
■ Fazit<br />
Nun bleibt <strong>für</strong> den Autor zu hoffen, daß die<br />
weniger bekannten, aber mächtigen Filterund<br />
Umlenkungstechniken Sie überzeugt<br />
haben: Für kleine Datenbanken reichen ein<br />
Editor und eine Batchdatei zum Suchen<br />
bestimmter Informationen allemal – die<br />
Vorteile liegen klar auf der Hand: einfache<br />
Pflege und sehr schneller Zugriff aus jedem<br />
Verzeichnis heraus.<br />
Es ist ein völlig unnötiger Aufwand (aber<br />
womöglich attraktiver), erst eine Adreßverwaltung<br />
und die Daten zu laden, um<br />
nach weiteren Befehlen an die gewünschte<br />
Information zu gelangen. <strong>Das</strong> sollten Sie<br />
nur bevorzugen, wenn Sie beispielsweise<br />
das Adreßformat auch <strong>für</strong> Ihre Textverarbeitung<br />
verwenden können – etwa <strong>für</strong><br />
Serienbriefe.<br />
FA 6/95 • 601