17.11.2012 Aufrufe

Das Magazin für Funk Elektronik · Computer

Das Magazin für Funk Elektronik · Computer

Das Magazin für Funk Elektronik · Computer

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!