Nikolaus Heusler Archiv

Erschienen in PC go!, Ausgabe unbekannt · Originaldatei: DOSCOR2.TXT

Hinweis: Dies ist das an die Redaktion eingereichte Manuskript, nicht der gedruckte Endtext. Layout, Bildunterschriften, Korrekturen und Kürzungen der Redaktion können in der veröffentlichten Fassung abweichen.

ObjektPC go!
Ausgabediverse
RubrikDOS-Corner
AutorNicki Heusler, XXX/XXXXXX
Datum7.05.94
ThemaTips und Tricks zu DOS, Batch usw.

Block-Cursor

Bei der Arbeit am Computer werden Ihre Augen auf eine harte Probe gestellt. Noch schlimmer ist es mit den trägen LCD-Anzeigen der Laptops. Vor allem der Strich-Cursor fällt hier kaum auf. Obwohl der blinkt, kann das Versteckspiel schon lästig werden. Abhilfe schafft ein kleines Script, das mit dem Befehl DEBUG (ab DOS 1.0) compiliert werden muß. Es verwandelt den Strich-Cursor in einen blinkenden Block von der Größe eines Zeichens. Davon profitieren nicht nur geplagte Notebook-Besitzer.
Geben Sie das folgende Listing beispielsweise mit dem Editor von MS-DOS (Kommando EDIT) ein:
N BLOCKCUR.COM
E 0100 B4 12 B3 10 CD 10 B1 07
E 0108 80 FB 10 74 0D 33 C0 8E
E 0110 C0 26 8A 0E 85 04 FE C9
E 0118 EB 00 B4 01 32 ED CD 10
E 0120 B4 4C CD 21
RCX
24
W
Q
Nach dem "Q" muß noch eine Leerzeile eingefügt werden. Speichern Sie vom Editor aus dieses Listing unter irgend einem Namen, beispielsweise BLOCKCUR.SCR. Wenn Sie "vorbelastet" sind, werden Sie sich vielleicht an ein MSE-Listing des C 64 erinnert fühlen. In der Tat handelt es sich hierbei um etwas ähnliches. Das Kommando N in der ersten Zeile gibt den Namen des zu erzeugenden Maschinenprogramms vor (COM-File). Die E-Befehle, gefolgt von einer Adresse und den Datenbytes, geben die eigentlichen Befehle für den Prozessor vor. Nach der Registerausgabe wird das erzeugte COM-File dann per W-Befehl unter dem angegebenenen Namen gespeichert ($24 Bytes). Q verläßt den Debugger. Es ist übrigens egal, ob Sie in diesem "Quelltext" große oder kleine Buchstaben verwenden. Da keine Prüfsummen verwendet werden, sollten Sie allerdings bei der Eingabe vorsichtig vorgehen.
Nach der Eingabe muß dieser Quelltext vom DEBUG-Tool übersetzt werden. Dazu geben Sie ein
DEBUG < BLOCKCUR.SCR
Dadurch werden die Ascii-Zeichen in BLOCKCUR.SCR in ein ablauffähiges COM-File übertragen. Das dauert keine Sekunde.
Der Befehl BLOCKCUR verwandelt fortan den Strich-Cursor in einen blinkenden Block. Sie könnten diesen Befehl auch in Ihre AUTOEXEC.BAT-Datei einbauen, ggf. mit einer Pfadangabe versehen.
Diese Umschaltung läßt sich mit dem Kommando MODE 80 rückgängig machen, dann erscheint wieder der gewohnte Strich.

Installieren leicht gemacht

Wer kennt das nicht? Das Installationsprogramm der neuen Software verlagt, daß die Installationsdiskette in Laufwerk A eingelegt werden muß. Das wird dann problematisch, wenn man Software auf einer 5 1/4 Zoll-Diskette besitzt: Um die in das "kleine" Laufwerk A zu bringen, müßte man sie einmal falten...
Das ist kein Grund zur Verweiflung: Ein möglicher Weg ist, über
ASSIGN A=B
die beiden Drives zumindest virtuell miteinander zu verbinden. Da dieser Befehl aber ab DOS 6.0 nicht mehr vorhanden ist, müssen wir uns etwas anderes einfallen lassen.
Die Vertauschung der Laufwerke ist auch mit der folgenden Befehlszeile ebenso leicht wie mit ASSIGN möglich:
SUBST A: B:\
Den "Backslash" erhält man ggf. durch gleichzeitiges Drücken der ALT-Taste mit den Ziffern 9 und 2 (nacheinander) auf der numerischen Tastatur.
Um die Laufwerke wieder in die richtige Ordnung zu bringen, bietet sich der Befehl
SUBST A: /D
an.

Disketten schnell löschen

Aufgabe: Eine Diskette soll komplett gelöscht werden, einschließlich aller Unterverzeichnisse.
Man könnte dazu den Befehl DEL *.* verwenden, der allerdings nur einzelne Dateien entfernt. Um wirklich alle Unterverzeichnisse zu erwischen, müßte man manuell mit CD umschalten. Eine aufwendinge Angelegenheit.
Ab DOS 6.0 steht der Befehl DELTREE zur Verfügung, der auch Unterverzeichnisse löscht - aber auch das dauert bei Disketten seine Zeit.
Die einfachste Lösung wäre, die Diskette einfach nochmals zu formatieren. Um nicht unnötig Zeit zu verlieren, führen wir ein "Quick-Format" (FORMAT-Befehl mit Parameter /Q) durch. Dadurch wird nur das Hauptverzeichnis gelöscht, der Rest der Diskette wird nur als unbelegt markiert. FORMAT durchsucht die Floppy dabei allerdings nicht nach defekten Sektoren.
Noch schneller geht es überraschenderweise, wenn man außerdem noch die Option /U angibt. Sie bewirkt normalerweise, daß die Formatierung vollständig erfolgt, also eigentlichg genau das Gegenteil von dem, was /Q verlangt. Das Programm speichert dann nicht mehr die Informationen, die zur Wiederherstellung einer versehentlich formatierten Diskette notwendig wären. Hier ist also Vorsicht geboten.
Hier nochmals der komplette Befehl:
FORMAT A: /Q /U
löscht die Diskette im Laufwerk A. Beantworten Sie die Sicherheitsanfragen, die dabei erscheinen, einfach entsprechend (erst "J", dann "N").

Remember me

Es ist immer wieder nützlich, am PC unter DOS über die History-Funktion verfügen zu können. "History" bedeutet, daß man auf Tastendruck bequem die letzten Befehle nochmals abrufen kann. Praktisch ist diese Hilfe beispielsweise, wenn bestimmte Prozeduren immer wieder durchgeführt werden müssen, beispielsweise das Löschen aller Textfiles in einigen Unterverzeichnissen. Der Anwender muß dann immer abwechselnd per CD das betreffende Verzeichnis anwählen und dann mit DEL *.TXT alle Textdateien löschen. Zumindests den zweiten Befehl DEL *.TXT könnten Sie dann mit nur zwei Tastendrücken (zweimal Cursor up) immer wieder abrufen.
Installiert wird diese praktische Hilfe über das in MS-DOS enthaltene Hilfsprogramm Doskey, das mit diesem Befehl gestartet wird:
DOSKEY
Das ist wieder einer von den Befehlen, die man gut in der AUTOEXEC.BAT unterbringen könnte, wenn er nicht schon drinsteht.
Nach der Installation belegt Doskey nur etwa drei Kilobyte residenten Speicher. Es merkt sich alle Befehle, die Sie ab jetzt eingeben. Um einen gespeicherten Befehl wieder abzurufen, betätigen Sie die Cursor up-Taste. Der letzte Befehl erscheint. Drücken Sie diese Taste jetzt so lange, bis der gewünschte Befehl erscheint. Mit Enter kann er, ggf. nach einer Modifizierung, übernommen werden. Die Cursortasten dienen also zum Scrollen durch diese Liste - nach vorne und zurück. Page up bringt Sie an den Anfang der Liste (erster gemerkter Befehl), Page down ergibt den aktuellsten Befehl.
Eine weitere Funktion ist praktisch zum Aufbau von eigenen Batchfiles. Soll eine Prozedur, die Sie gerade in Form von Batchbefehlen im "Direktmodus" durchgeführt haben, automatisiert in Form eines Batches ablaufen, geben Sie ein:
DOSKEY /HISTORY > PROGRAMM.BAT
Setzen Sie für PROGRAMM.BAT den gewünschten Namen der Zieldatei ein. Die Option /HISTORY bewirkt, daß Doskey alle bisher gemerkten Befehle in Form einer Liste untereinander ausgibt. Das Größerzeichen lenkt die Ausgabe in eine Datei um.
Soll PROGRAMM.BAT nicht alle gemerkten Befehl enthalten, so können Sie diese Datei mit einem Editor (zum Beispiel EDIT-Befehl, oder mit dem Norton-Commander) entsprechend nachbearbeiten.
Rufen Sie die Liste dann mit
PROGRAMM
ab, führt der PC brav die Befehle aus, die darin enthalten sind.
Doskey enthält noch weitere praktische Funktionen, beispielsweise einen komfortablen Makro-Editor. Mehr zu Doskey erfahren Sie von DOS direkt durch Eingabe des Hilfe-Befehles:
HELP DOSKEY
bringt alle Features ans Tageslicht.

Versionenkonflikt

Erscheint beim Einsatz von DoubleSpace zur Festplattenkomprimierung die Fehlermeldung
CANNOT LOAD SMARTDRIVE WITH DOUBLESPACE
so liegt dies vermutlich an der Version von Smartdrive. Smartdrive muß in einer Version ab 4.1 vorliegen, um mit DoubleSpace zusammenzuarbeiten. Benutzt man dennoch eine ältere Version, kommt es zu dieser Fehlermeldung. Arbeiten Sie daher mit SMARTDRV.EXE in der Version 4.1, die Bestandteil von MS-DOS 6.0 ist.

NUM-LOCK defaultmäßig einschalten

Das Setup-Menü mancher PCs gestattet es nicht, den Zustand des NUM-LOCK-Schalters beim Einschalten des PCs einzustellen. Üblicherweise ist diese Funktion defaultmäßig ausgeschaltet. Soll beispielsweise für die Eingabe vieler Zahlen der numerische Zahlenblock bereits beim Einschalten aktiviert werden, hilft ein kleines Programm, das man von AUTOEXEC.BAT aus aufruft.
Zur Erzeugung dieses Programms verwenden wir den Debugger DEBUG, der Bestandteil von MS-DOS ist. Starten Sie dieses Hilfsprogramm von DOS aus mit
DEBUG
Als Eingabeprompt erscheint ein Minuszeichen. Geben Sie jetzt den Buchstaben A und RETURN ein, um den Assembler zu starten. In die nun erscheinenden Zeilen geben Sie folgendes "Programm" ein, wobei ebenfalls nach jeder Zeile ENTER betätigt werden muß:
XOR AX,AX
MOV DS,AX
MOV AX,20
MOV [417],A1
RET
Brechen Sie nach Eingabe des letzten Befehles die Assemblierung mit STRG C ab.
Der XOR-Befehl löscht das AX-Register. Durch das folgende MOV wird auch das DS-Register auf Null gesetzt. Der Befehl MOV AX,20 liest das NUM-Statusbit in das AX-Register. Mit dem vierten Befehl laden wir das Tastaturstatusbyte, per RET erfolgt dann der Rücksprung ins DOS. Dieser Befehl kündigt dem PC das Ende des kleinen Programms an und ist notwendig, damit sich der Prozessor nicht in den Untiefen des Speichers verläuft (sprich "abstürzt").
In der Zeile, in der das NUM-Statusbit in das AX-Register gelesen wird, kann anstelle der 20 (hex) auch eine andere Zahl stehen. So löscht eine Null (00) alle Statusbits, somit auch das Num-Lock-Bit. Auch die umgekehrte Aktion ist programmierbar. In der folgenden Tabelle ist die Bedeutung aller Bits aufgeschlüsselt:
Bit 7: EINFG-Taste
Bit 6: SHIFT-LOCK
Bit 5: NUM-Lock
Bit 4: SCROLL
Bit 3: ALT
Bit 2: STRG
Bit 1: SHIFT links
Bit 0: SHIFT rechts
Jetzt wird durch Eingabe folgender Befehle, jeder in einer eigenen Zeile hinter dem Bindestrich, das Programm erzeugt:
RCX
10
N NUMLOCK.COM
W
Q
Vor der 10 (hexadezimale Programmlänge) gibt der PC bei der Eingabe einen Doppelpunkt vor. Der N-Befehl definiert den Dateinamen, einen beliebigen Namen mit der Endung .COM. Mit W wird das Programm geschrieben, und Q verläßt DEBUG.
Durch Eingabe eines Fragezeichens anstelle dieser Kurzbefehle listet Debug übrigens alle Befehle, die verstanden werden, mit Kurzbeschreibung auf.
Das Programm zum Setzen des Num-Lock-Status kann nun, beispielsweise von AUTOEXEC.BAT aus ggf. mit Pfadangabe, mit dem Befehl
NUMLOCK
aufgerufen werden.

Ist Ihrer zu klein?

Beim Einsatz des BACKUP-Programms kann sowohl in der Version für DOS wie auch unter Windows die Fehlermeldung
DMA BUFFER SIZE TOO SMALL
auftreten. Um sie zu beseitigen, muß lediglich die Größe des sogenannten DMA-Puffers erhöht werden.
Für die DOS-Version ist nur eine kleine Modifizierung der CONFIG.SYS notwendig. Suchen Sie dazu mit einem ASCII-Editor die Zeile dieser Datei mit dem Eintrag EMM386.EXE. An diese Zeile muß durch ein Leerzeichen getrennt die Option /D:64 angehängt werden. Ist sie bereits vorhanden, muß ggf. die Zahl in 64 geändert werden. Nach dem Speichern der Datei und einem Rechnerneustart werden die Änderungen wirksam.
Benutzen Sie BACKUP in der Version für Windows, muß außerdem (zusätzlich) mit einem geeigneten Editor die Steuerdatei WINDOWS.INI angepaßt werden. Dazu suchen Sie die Rubrik [386Enh]. Diese Sektion erweitern Sie um die Zeile
DMABuffersize=64
Anschließend soll die so geänderte Datei gespeichert werden. Nach einem Neustart von Windows hat das System Ihre Änderung registriert. BACKUP dürfte jetzt einwandfrei arbeiten.

Ordentlicher DIR-Befehl

Es ist schon seltsam: DIR ist wahrscheinlich der am häufigsten angewandte DOS-Befehl, und doch erscheint er in einem äußerst schlechten Licht: Nach der Eingabe von DIR rauschen alle Dateinamen dieses Verzeichnisses in unglaublicher Geschwindigkeit über den Bildschirm, noch dazu ungeordnet "wie Kraut und Rüben". Zwar kann man durch die Angabe einiger Optionen und/oder Filter die Ausgabe auf ein brauchbares Format trimmen, aber wer weiß die schon auswendig?
Praktischer, weil zeitsparender, ist folgender Eintrag in der AUTOEXEC.BAT:
SET DIRCMD = /P /O:GNE
Der Parameter /P bewirkt die seitenweise Ausgabe der Files. Damit läuft Ihr Bildschirm nicht mehr über. /O veranlaßt die geordnete Dateiausgabe, wobei Unterverzeichnisse an den Anfang der Liste gestellt werden (G), die Namen alphabetisch sortiert (N) und Dateien gleichen Namens nach ihrer Endung geordnet werden (E).

Programmierfehler

In DOS 6.0 existiert ein Fehler, der sich dann bemerkbar macht, wenn in der AUTOEXEC.BAT an mehreren Stellen der Suchpfad definiert wird. Gibt es beispielsweise die beiden Zeilen
PATH C:\TOOLS
PATH %PATH%; C:\WINDOWS
ergänzt das Setup-Programm von MS-DOS 6.0 beide Kommandozeilen um den Eintrag C:\DOS. Das Ergebnis sieht so aus
PATH C:\DOS; C:\TOOLS
PATH C:\DOS; %PATH%; C:\WINDOWS
und läßt sich nur durch einen nachträglichen Eingriff in AUTOEXEC.BAT korrigieren.

Platten-Speicher sparen

Haben Sie MS-DOS 6.0 auf einem älteren PC mit 8086 oder 80286 Prozessor installiert, können Sie einige DOS-Dateien mit ruhigem Gewissen löschen, da sie nur für PCs ab 386 geeignet sind.
Im Hauptverzeichnis der Festplatte finden wir das erste potentielle Opfer unserer Aufräumaktion: Die Datei WINA20.386 kommt nur unter Windows 3.0 im erweiterten Modus zum Einsatz und kann auf AT oder XT gelöscht werden:
DEL WINA20.386
Im Verzeichnis DOS stehen acht Files, die für einen Rechner der früheren Generation ebenfalls gegenstandslos sind. Dazu gehören der Expanded Memory Manager sowie zwei Treiber und fünf Memmaker-Dateien:
CD \DOS
DEL EMM386.EXE
DEL MONOUMB.386
DEL VFINTD.386
DEL CHKSTATE.SYS
DEL MEMMAKER.EXE
DEL MEMMAKER.HLP
DEL MEMMAKER.INF
DEL SIZER.EXE
Das Löschen dieser neun Files bringt zwar "nur" einen Gewinn von 300 Kilobyte, aber wer das Byte nicht ehrt...

Resteverwertung

Nach einem UNINSTALL des MS-DOS 6.0 Upgrade bleiben im allgemeinen einige Dateien im DOS-Verzeichnis stehen, die nicht gelöscht werden. Dabei handelt es sich um die File-Gruppen DEFAULT.*, DOSBACK.* und *.INI. Da diese Programme von MS-DOS-Hilfsprogrammen erzeugt wurden und bei einem Uninstall nur alle von SETUP angelegten Dateien gelöscht werden, bleiben diese drei Gruppen unbehelligt. Sie können manuell gelöscht werden.

Neues von VER

Über den Befehl VER erfährt der Anwender, welche Betriebssystemversion seinen PC schmückt. Eine nicht dokumentierte Option entlockt dem Betriebssystem noch zwei weitere Informationen:
VER /R
gibt die Revisionsnummer aus und eine Meldung, ob DOS in den oberen Speicherbereich geladen wurde.

Alle Dateien listen

Der Befehl TYPE dient dazu, den Inhalt einer Textdatei am Bildschirm anzuzeigen. Leider dürfen beim Dateinamen keine Joker angegeben werden. Es ist beispielsweise nicht erlaubt, mit
TYPE *.TXT
den Inhalt aller Textdateien auszugeben. Mit zwei kleinen Stapelprogrammen können Sie Schreibarbeit sparen. TYPEALL.BAT, das Hauptprogramm, sieht wie folgt aus:
@ECHO OFF
IF "%1"=="" FOR %%f IN (*.TXT) DO CALL moreall %%f
IF NOT "%1"=="" FOR %%f IN (%1) DO CALL moreall %%f
Von diesem Programm wird das Unterprogramm MOREALL.BAT aufgerufen, das nur vier Zeilen enthält:
CLS
ECHO Inhalt der Datei %1
TYPE < %1 | MORE
PAUSE > NUL
Für die Anwendung gibt es zwei Möglichkeiten: Geben Sie nur
TYPEALL
ohne Parameter ein, listet das Programm den Inhalt aller im aktuellen Verzeichnis enthaltenen .TXT-Dateien, wobei nach dem Ende jeder Seite und nach jeder Datei eine Taste gedrückt werden muß. Sie können den zu listenden Dateityp aber auch explizit angeben, etwa so:
TYPEALL AUTOEXEC.*
TYPEALL *.*
TYPEALL *.C
TYPEALL *.DOC
und so weiter. Die beiden Fälle werden von den beiden IF-Befehlen in TYPEALL.BAT bearbeitet.

Aus für das Fragespiel

Sagen Sie nicht, daß Sie sich noch nie über die Meldung
NICHT BEREIT BEIM LESEN VON LAUFWERK A
(A)BBRECHEN, (W)IEDERHOLEN, (U)EBERGEHEN
von DOS 5.0 geärgert haben! Geht es Ihnen auch so, daß Sie nie so genau den Unterschied zwischen diesen drei Alternativen kennen? Der Grund für diese Meldung ist ein Fehler im Laufwerk A. Meistens hat man nur vergessen, die Floppy einzulegen oder die Klappe zu schließen.
Soll jetzt von der Festplatte aus weitergearbeitet werden, geht das Ratespiel los: Zuerst versucht man, mit A zu entkommen, mit dem Erfolg, daß einfach die gleiche Meldung nochmal erscheint. Mit dem Buchstaben W geht es auch nicht weiter. Erst U bringt Abhilfe: DOS fragt nach einem anderen Laufwerk. Jetzt nur noch C: eingeben, und es geht weiter: DOS wechselt das Laufwerk.
Falls Ihnen das - zu Recht - zu umständlich ist, besteht die Möglichkeit, über einen Schalter in CONFIG.SYS die Frage nach dem neuen Laufwerk sofort auf den Bildschirm bringen.
Dazu muß in der Zeile
SHELL = C:\COMMAND.COM /E:512 /P
lediglich ein neuer Parameter /F angehängt werden. Die Zeile sieht dann so aus:
SHELL = C:\COMMAND.COM /E:512 /P /F
Der Parameter /F bewirkt, daß DOS die Frage quasi selbst beantwortet und sofort nach dem neuen Laufwerk fragt. Damit hat die Probiererei endlich ein Ende.

Automatische Konfigurierung

Wußten Sie, daß es die Möglichkeit gibt, die CONFIG.SYS mit einem Menü zu versehen, um den PC beim Einschalten je nach Wunsch unterschiedlich zu konfigurieren?
Das kann vor allem dann von Nutzen sein, wenn Sie auf Ihrem PC einerseits Spiele starten und andererseite "ernsthafte" Großprogramme wie zum Beispiel Windows betreiben.
Während für viele Anwendungsprogramme Treiber wie EMM386 oder HIMEM unbedingt erforderlich sind, funktionieren manche umfangreiche Spiele aus Speicherplatzgründen nicht, wenn diese Treiber geladen sind. Um nicht für den Betrieb mit Spielen eigene Boot-Disketten verwenden zu müssen, die vor dem Einschalten des PCs eingelegt werden, falls ein Spiel gestartet werden soll, macht man von dem Menü in CONFIG.SYS Gebruch. Und das geht ganz einfach: Setzen Sie einfach in die erste Zeile der CONFIG.SYS das Wort MENU in eckigen Klammern. Dahinter folgen dann die zur Auswahl stehenden Menüpunkte im Format MENUITEM = Label, Text. Label bezeichnet dabei die Sektion in CONFIG.SYS, die bei Anwahl des entsprechenden Menüpunktes durchlaufen werden soll, und "Text" meint den Multiple-Choice-Menütext. An einem Beispiel soll das erklärt werden. Eine Menü-CONFIG.SYS könnte so aussehen:
[MENU]
MENUITEM=NORMAL,Normale Konfiguration z.B. für Windows
MENUITEM=GAMES,Konfiguration für Spiele
[NORMAL]
DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE noems
DOS=HIGH,UMB
[GAMES]
REM
[COMMON]
DEVICE=C:\DOS\SETVER.EXE
BREAK ON
SHELL=C:\DOS\COMMAND.COM C:\DOS\ /E:1024 /P
FILES=40
BUFFERS=20
Nach dem Start erkennt Ihr PC, daß hier ein Menü vorhanden ist. Er gibt selbständig folgendes Menü auf dem Bildschirm aus:
A - Normale Konfiguration z.B. für Windows
B - Konfiguration für Spiele
Je nachdem, für welchen Punkt Sie sich entscheiden, wird entweder mit dem Label [NORMAL] (bei der normalen Konfiguration) oder bei [GAMES] (für Spiele) weitergemacht. Wie Sie sehen, sind beide in dieser CONFIG.SYS enthalten. Im Falle von [NORMAL] werden drei Treiber geladen: EMM386, HIMEM und DOS=HIGH,UMB. Falls [GAMES] gewählt wurde, führt der PC nur den REM-Befehl aus, die drei erwähnten Treiber werden also nicht geladen, und es steht ausreichend Platz für ein Spiel zur Verfügung.
Wichtig zu wissen ist noch die Bedeutung des Labels [COMMON]. Die hier enthaltenen Befehle werden in beiden Fällen abgearbeitet: Unter anderem wird per SHELL der DOS-Kommandointerpreter eingeschaltet, und die Option /P in diesem Befehl ist dafür verantwortlich, daß AUTOEXEC.BAT ausgeführt wird.
Beachten Sie bei diesen Menüs bitte, daß alle im Menü genannten Labels wirklich in CONFIG.SYS enthalten sind. Im obigen Beispiel sollen ja im Fall von GAMES keine besonderen Befehle ausgeführt werden, das Label [GAMES] darf aber nicht fehlen und enthält daher nur den REM-Befehl (ohne Wirkung). Auch auf den [COMMON]-Bereich wird man im Allgemeinen nicht verzichten.
Den gewählten Bereich erfährt man übrigens durch Abfrage der Variablen %CONFIG% beispielsweise in der AUTOEXEC.BAT:
ECHO Gewählte Konfiguration: %CONFIG%
Je nach Wahl wird entweder GAMES oder NORMAL angezeigt. Auch in AUTOEXEC.BAT sind natürlich Befehle möglich, die nur im einen oder anderen Fall ausgeführt werden:
goto %CONFIG%
:normal
LH C:\DOS\SMARTDRV.EXE
LH C:\DOS\MOUSE.COM
:games
PROMPT $p$g
Falls die "normale" Konfiguration eingestellt wurde, werden die beiden LH-Befehle (Load High) ausgeführt. Danach geht es mit dem PROMPT-Befehl weiter. Hat sich der Anwender für "Games" entschieden, übersprint der PC die beiden LHs und macht direkt bei PROMPT weiter.
Um herauszufinden, welche Dateien beispielsweise für den Betrieb eines speicherplatzkritischen Spieles nicht geladen werden dürfen, muß man meistens ein wenig experimentieren. Doch wenn das Menü erst einmal "steht", bringt es erhebliche Erleichterungen für den Anwender.

Platzbedarf anzeigen

Nicht selten interessiert, wieviel Platz ein bestimmtes Verzeichnis auf Diskette oder Festplatte belegt. Dazu wird der DIR-Befehl eingesetzt. Sind noch zusätzliche Unterverzeichnisse vorhanden, hilft ab DOS 6.0 ein zusätzlicher Parameter:
DIR WINDOWS /S
Nach ENTER laufen die Dateinamen über den Bildschirm. Interessant ist aber nur die Summe in der untersten Zeile. Um das Listing auf das Wesentlich zu beschränken, könnte man mit dem Filter FIND dafür sorgen, daß nur die Zeilen ausgegeben werden, die "Datei(en)" enthalten:
DIR WINDOWS /S | FIND "Datei(en)"
Das "Filterzeichen" "|" bewirkt, daß die Ausgabe einer Batchdatei bzw. eines Programms (hier: DIR) als Eingabe an ein zweites Programm (etwa FIND) weitergegeben werden. Man erhält es durch Gedrückthalten der ALT-Taste und gleichzeitige Eingabe der Ziffern 1 2 4 auf der numerischen Tastatur.
Leider gibt der DIR-Befehl nach jedem Unterverzeichnis eine Zwischensumme aus, die ebenfalls "Datei(en)" enthält und daher ebenfalls angezeigt wird. Deshalb erhält man nicht nur die letzten beiden Zeilen, sondern sämtliche Zwischenergebnisse dazu. Um trotzdem die relevante Zahl auf einen Blick erfassen zu können, sortiert das SORT-Filter die Ausgabe rückwärts. Dadurch steht die wichtige Zahl in der ersten Zeile:
DIR WINDOWS /S | FIND "Datei(en)" | SORT /R
Es würde sich sogar fast lohnen, für diesen komplizierten Befehl eine eigene Batchdatei anzulegen, beispielsweise PLATZ.BAT mit folgendem Inhalt:
DIR %1 /S | FIND "Datei(en)" | SORT /R
Beachten Sie, daß hier kein fester Verzeichnisname vorgegeben wurde. Stattdessen wird der erste an PLATZ übergebene Parameter übernommen, beispielsweise
PLATZ WINDOWS
Der Wert in der ersten Zeile der Ausgabe gibt den Platzbedarf dieses Verzeichnisses an, wobei auch Unterverzeichnisse mitgezählt werden.

Warmstart selbst gemacht

Unter DOS ist es grundsätzlich kein Problem, einfach durch Eingabe des Namens ein Programm (Endung .COM, .EXE oder .BAT) zu starten. Schwierig kann es unter Umständen werden, wenn dieses Programm mit der durch AUTOEXEC.BAT und CONFIG.SYS eingestellten Rechnerkonfiguration nicht "einverstanden" ist. Manche Programme benötigen Expanded Memory, andere stürzen sogar ab, wenn ein Fetsplattencache wie Smartdrive aktiviert ist. Spiele gelten hier als besonders heikel.
Was liegt also näher, als für jeden Zweck, im Extremfall für jedes Programm, jede Anwendung je eine eigene AUTOEXEC.BAT und eine eigene CONFIG.SYS vorzusehen? Dazu könnte man ein Verzeichnis \BOOTDATA anlegen, in der alle Versionen dieser beiden Systemdateien vorhanden sin, abrufbar für den jeweiligen Einsatzzweck. AUTOEXEC.WIN wäre zum Beispiel geeignet für Windows, AUTOEXEC.GAM für Spiele, und AUTOEXEC.BOC dient zum Starten des Computers, wenn später in Borland C programmiert werden soll. Entsprechendes gilt für CONFIG.SYS, das ebenfalls in drei (oder mehr) Versionen im Verzeichnis \BOOTDATA liegt: CONFIG.WIN, CONFIG.GAM und CONFIG.BOC. Das Problem dabei ist nur, daß der Computer beim Einschalten noch nicht weiß, welches Programm er später abarbeiten soll und daher nicht entscheiden kann, welche CONFIG.SYS und welche AUTOEXEC.BAT auszuwählen ist.
Hier ist eine Möglichkeit, dieses Problem zu umgehen. Wir definieren einen Befehl BOOT (natürlich in Form einer Batchdatei), dem als Parameter die gewünschte Anwendung des PCs übergeben wird. Dieses Programm kopiert dann aus dem Verzeichnis \BOOTDATA die passende Version von AUTOEXEC.BAT und von CONFIG.SYS ins Root-Directory. Wird dann zum Beispiel mit den Tasten STRG ALT ENTF ein Reset (Warmstart) ausgelöst, findet der Computer die passenden Steuerdateien vor und bootet der Anwendung entsprechend.
Viel komfortabler läuft dieser Vorgang, wenn wir auch noch den Warmstart automatisch ausführen lassen. Unter DOS gibt es keinen Befehl dafür. Aber mit einem kurzen Skript für den Debugger DEBUG, der Bestandteil von MS-DOS ist, kann man den Warmstart befehlsgesteuert aufrufen. Geben Sie dazu mit einem ASCII-Editor (zum Beispiel EDIT-Kommando) folgende Zeilen (Groß- oder Kleinbuchstaben) in eine Datei mit dem Namen WARM.SCR ein:
A 0100
MOV AX,40
MOV ES,AX
ES:
MOV WORD PTR [72],1234
JMP FFFF:0000

N WARM.COM
RCX
11
W
Q
Vergessen Sie auf keinen Fall die Leerzeile nach dem JMP-Befehl! Die eckigen Klammern erhält man beispielsweise durch ALT 91 und ALT 93. Mit dem Befehl
DEBUG < WARM.SCR
übersetzt der Debugger das eingegebene Skript in eine ausführbare Datei WARM.COM. Das Programm simuliert einen Warmstart, indem es in den Tastaturpuffer die Tastenanschläge STRG ALT ENTF schreibt. Anschließend springt es zu einem Speicherplatz, den der PC auch bei einem Warmstart als ersten Code ausführt. Mit dem neuen Befehl
WARM
läßt sich der PC so komfortabel starten. Dieser Befehl eignet sich übrigens nicht für Windows.
Jetzt soll die eigentliche Aufgabe gelöst werden. Wir definieren einen neuen Befehl BOOT, dem als Parameter der Name der gewünschten Konfiguration übergeben wird. Geben Sie dazu folgende Zeilen mit einem Editor ein und speichern sie unter dem Namen BOOT.BAT:
@ECHO OFF
IF "%1" == "GAME" GOTO GAME
IF "%1" == "WINDOWS" GOTO WINDOWS
IF "%1" == "" GOTO NORMAL
ECHO "UNBEKANNTE KONFIGURATION!"
GOTO SCHLUSS
:GAME
COPY C:\BOOTDATA\AUTOEXEC.GAM C:\AUTOEXEC.BAT
COPY C:\BOOTDATA\CONFIG.GAM C:\CONFIG.SYS
GOTO WARMSTART
:WINDOWS
COPY C:\BOOTDATA\AUTOEXEC.WIN C:\AUTOEXEC.BAT
COPY C:\BOOTDATA\CONFIG.WIN C:\CONFIG.SYS
GOTO WARMSTART
:NORMAL
COPY C:\BOOTDATA\AUTOEXEC.NOR C:\AUTOEXEC.BAT
COPY C:\BOOTDATA\CONFIG.NOR C:\CONFIG.SYS
REM GOTO WARMSTART
:WARMSTART
WARM.COM
:SCHLUSS
REM
Wird der BOOT-Befehl ohne Parameter aufgerufen (einfach nur BOOT), wird beim Label :NORMAL die normale Konfiguration hergestellt. Dazu sollten Sie jetzt das Verzeichnis BOOTDATA anlegen und dort eine Sicherheitskopie ihrer CONFIG.SYS und AUTOEXEC.BAT-Dateien anlegen:
CD..
MKDIR BOOTDATA
COPY C:\AUTOEXEC.BAT C:\BOOTDATA\AUTOEXEC.NOR
COPY C:\CONFIG.SYS C:\BOOTDATA\CONFIG.NOR
So. Wenn Sie jetzt noch die Steuerdateien AUTOEXEC.GAM, AUTOEXEC.WIN, CONFIG.GAM sowie CONFIG.WIN in BOOTDATA anlegen, können Sie den neuen Befehl ausprobieren:
BOOT schaltet auf die normale Konfiguration und löst einen Warmstart aus,
BOOT GAME schaltet auf die für Spiele geeignete Konfiguration und löst einen Warmstart aus,
BOOT WINDOWS schaltet auf die Konfiguration für den Betrieb von Windows und löst einen Warmstart aus.
Wird BOOT mit einem anderen Parameter als WINDOWS oder GAME aufgerufen, erscheint eine Fehlermeldung. Natürlich können Sie die Palette von Konfigurationen ganz nach Belieben erweitern (zum Beispiel für die Programmierung in C: siehe oben). Eine Möglichkeit wäre auch noch, am Ende der jeweiligen AUTOEXEC.BAT gleich das entsprechende Programm zu starten. Die letzten Zeilen der AUTOEXEC.WIN würden dann so lauten:
CD C:\WINDOWS
WIN
Dadurch wird Windows geladen und gestartet. Beachten Sie bei Manipulationen an den Systemdateien wie in diesem Fall nur, daß Sie sich aus Sicherheitsgründen stets funktionsfähige Kopien von AUTOEXEC.BAT oder CONFIG.SYS auf einer Diskette aufbewahren sollten.

Farbe macht das Leben bunt

Es ist doch armselig: Da gibt es PCs, die zwölf Millionen Farben darstellen können, und doch erfolgt der Dialog unter DOS immer im langweiligen schwarz/grau. Mit Hilfe eines kleinen Assemblerprogramms wollen wir diese Monotonie beseitigen.
Zur Umwandlung benötigen wir den Debugger DEBUG von MS-DOS 5.0. Starten Sie ihn durch Eingabe von DEBUG. Als Bereitsschaftszeichen erscheint ein Gedankenstrich. Geben Sie nun die folgenden Zeilen, jeweils mit der ENTER-Taste als Abschluß, ein (Groß- oder Kleinbuchstaben, vor den Befehlen gibt der PC eine Art "Zeilennummern" aus):
A
MOV AX,0600
MOV BX,1E00
MOV CX,0000
MOV DX,1850
INT 10
MOV AX,0200
MOV BX,0000
MOV DX,0000
INT 10
RET
(hier nur RETURN drücken)
RCX
001A
N BLAUGELB.COM
W
Q
Die ersten vier MOV-Befehle versehen den Bildschirm mit den neuen Attributen für Vorder- und Hintergrundfarbe. Die drei letzten MOV-Befehle plazieren den Cursor in seiner Home-Position. Der RET-Befehl kündigt das Ende des kleinen Programms an, er bewirkt den Rücksprung nach DOS und verhindert den Absturz. DEBUG legt auf der Platte eine Datei BLAUGELB.COM an (diesen Namen können Sie frei ändern, er sollte allerdings mit .COM enden und darf davor maximal acht Zeichen umfassen). Geben Sie nun
BLAUGELB
ein, startet das auf diese Weise erzeugte Programm und präsentiert gelbe Zeichen auf blauem Hintergrund.
Sie können diese Farbwahl natürlich ganz nach Belieben ändern. Der zuständige Befehl lautet
MOV BX,1E00
(in der dritten Zeile des Skripts). Die ersten beiden Stellen nach dem Doppelpunkt definieren die Farbe gemäß folgender Tabelle:
0 = schwarz
1 = blau
2 = grün
3 = cyan (türkis)
4 = rot
5 = magenta (violett)
6 = braun
7 = hellgrau
8 = hellblau
9 = dunkelgrau
A = hellgrün
B = hellcyan
C = hellrot
D = hellmagenta
E = gelb
F = weiß
In diesem Fall (1E) werden also gelbe Zeiche auf blauem Hintergrund geschaltet. Zur Änderung müssen Sie den Debugger neu starten und den MOV-Befehl entsprechend ändern. Verwenden Sie dann auch einen anderen Dateinamen. Einfacher wird diese Prozedur, wenn Sie die Zeilen für den Debugger wie oben angegeben in eine Datei schreiben und diese zum Beispiel unter dem Namen FARBE.SCR speichern. Der Debugger wird dann mit
DEBUG < FARBE.SCR
aufgerufen und liest aus der Datei. In diesem Fall müßten Sie bei einer Änderung nicht jedes Mal das ganze Maschinenprogramm neu eingeben.
Beachten sollte man, daß die Wahl einer Hintergrundfarbe über 7 eine blinkende Vordergrundfarbe und damit blinkenden Text zur Folge hat - sicherlich nicht die beste Lösung für Ihre Augen. Selbstverständlich ist es auch nicht ganz intelligent, für Vorder- und Hintergrund die selbe Farbe zu wählen.

Dateien bequem komprimieren

Platz auf der Platte ist etwas, das Computerbesitzers häufig fehlt. In diesem Fall helfen Kompressor-Programme wie ARJ oder PKZIP, die aus Files noch das letzte Bißchen Luft herausquetschen und somit helfen, Platz zu sparen. Soll nur eine Datei oder ein Verzeichnis "eingestampft" werden, so läßt sich der entsprechende Befehl an das Packprogramm noch relativ einfach von der DOS-Kommandozeile aus eingeben. Werden es aber mehrere Dateien oder gar bestimmte Files aus vielen verschiedenen Directories, kann dieses Verfahren sehr schnell sehr unhandlich werden.
Damit Ihnen nicht endlose Tipparbeit ins Haus steht, zeigen wir am Beispiel von ARJ, wie man sehr bequem mit Hilfe der zu MS-DOS gehörenden Dosshell per "Drag and Drop" die zu packenden Dateien auswählt und verarbeitet. Dazu brauchen Sie eine Batchdatei, die nur eine Zeile enthält:
ARJ A HIERHIN.ARJ %1
Setzen Sie für HIERHIN.ARJ den Namen des ggf. schon bestehenden Archivs ein, in das die Dateien gepackt werden sollen. Enthält der MS-DOS-Suchpfad nicht das Verzeichnis, in dem das Archiv steht bzw. stehen soll, muß zusätzlich der Pfad angegeben werden. Der Befehl veranlaßt ARJ, die in %1 spezifizierte Variable (erster Parameter des Aufrufs) in das spezifizierte Archiv zu stecken. Speichern Sie diese Zeile zum Beispiel unter dem Namen ARJBATCH.BAT auf der Platte.
Durch Eingabe von
DOSSHELL
wird das gleichnamige Programm gestartet. Es braucht eine kurze Weile, um nun die Verzeichnisstruktur Ihrer Festplatte festzustellen. Danach schaltet man im Menü "Anzeige" auf "zweifache Dateiliste". In das eine Fenster bringt man das Verzeichnis, in dem sich die Batchdatei ARJBATCH befindet. In dem anderen Fenster finden sich die Files, die in das Archiv gepackt werden sollen. Mit "Drag and Drop" werden jetzt die einzelnen Namen auf ARJBATCH.BAT gezogen: Bewegen Sie den Mauszeiger auf das gewünschte File, klicken Sie es an und ziehen Sie die Maus bei noch gedrückter Taste auf den Dateinamen ARJBATCH.BAT. Dort lassen Sie die zu komprimierende Datei "fallen" (Maustaste loslassen). Die DOS-Shell startet daraufhin die Stapeldatei und übergibt ihr als Parameter den Namen des zu packenden Files. ARJ komprimiert es und schreibt es in das angegebene Archiv.
Beschleunigen Sie den Ablauf, indem Sie im Menü "Optionen bestätigen" den Schalter bei "Mausverwendung bestätigen" auf "aus" stellen. Das Programm fragt dann nicht mehr jedes Mal, ob es das angewählte File tatsächlich starten soll.

Auf der Suche

Das folgende Stapelprogramm durchsucht beliebige (auch Gruppen von) Dateien nach Begriffen. Gelistet werden alle Files, in denen der Begriff vorkommt. Anwendung findet die Routine beispielsweise, wenn in einem Texte-Unterverzeichnis alle Dokumente gefunden werden sollen, in denen ein bestimmtes Schlüsselwort enthalten ist.
Geben Sie folgende Zeilen mit einem ASCII-Editor (wie EDIT) ein und speichern sie unter dem Namen TEXTSUCH.BAT:
@ECHO OFF
IF "%1" == "" GOTO FEHLER
DEL FUND.DAT
SET A=%1
:SUCHE
IF "%2"=="" GOTO FERTIG
FOR %%B IN (%A%) DO FIND /I "%2" %%B » FUND.DAT
SHIFT
GOTO SUCHE
:FERTIG
TYPE FUND.DAT | MORE
GOTO ENDE
:FEHLER
ECHO Syntax: TEXTSUCH Dateiliste <Begriff1 Begriff2 ...>
:ENDE
REM
Der Stapeldatei soll als erster Parameter die Dateiliste, etwa *.TXT für alle Textfiles übergeben werden. Dahinter stehen durch Leerzeichen getrennt die zu suchenden Begriffe, beispielsweise:
TEXTSUCH *.* HANS PETER HORST
Dieser Befehl listet die Namen aller Dateien, in denen mindestens einer der drei Namen enthalten ist. Ggf. können Sie bei der Dateiliste auch noch einen Pfadnamen angeben.
Zur Funktionsweise: Nachdem TEXTSUCH die Datei FUND.DAT, in der die Namen der Fundstellen temporär zwischengespeichert werden, gelöscht hat, und einer Überprüfung der Syntax (ist kein Parameter vorhanden, gibt TEXTSUCH eine kurze Anleitung aus), springt das Programm in die Schleife ab dem Label SUCHE. Wird hier festgestellt, daß das Ende der Liste mit den Suchbegriffen erreicht ist, bricht die Bearbeitung bei FERTIG ab, und die Ausgabeliste FUND.DAT wird seitenweise (Filter MORE) ausgegeben.
Sonst durchsucht die FOR-Schleife alle Dateien, die zu dem angegebenen Namen (erster Parameter) passen. Mit Hilfe des DOS-Filters FIND stellen wir ggf. das Vorhandensein fest (durch den Parameter /I wird Groß- und Kleinschreibung ignoriert). Der FIND-Befehl gibt die Namen der Dateien aus, die den Begriff enthalten; diese Ausgabe wird mit den beiden Größerzeichen umgelenkt und an FUND.DAT angehängt.
Teilweise funktioniert TEXTSUCH auch mit Dateien, die keinen reinen Text enthalten (zum Beispiel binäre Dateien). So kann man sich beispielsweise sämtliche Files anzeigen lassen, die den Begriff "Microsoft" enthalten.

Hinweise zum SYS-Befehl

Der SYS-Befehl von MS-DOS dient dazu, eine Startdiskette (Bootdisk) zu erzeugen. Das funktioniert aber nur dann, wenn sich die Datei COMMAND.COM im Hauptverzeichnis von C: befindet. Andernfalls erscheint die Fehlermeldung
COMMAND.COM KONNTE NICHT AUF ZIELDATENTRÄGER KOPIERT WERDEN
Da hilft es auch nichts, wenn die Umgebungsvariable COMSPEC und das Kommando SHELL= in der CONFIG.SYS mit kompletter Pfadangabe auf COMMAND.COM zeigen: SYS sucht immer nur im Root-Directory. Wird es dort nicht fündig, erscheint die Fehlermeldung.
Um das Problem zu beheben, kopieren Sie einfach den Interpreter COMMAND.COM in das Hauptverzeichnis: Dazu wechseln Sie per CD in das Unterverzeichnis, in dem die Datei momentan steht, und geben dann ein:
COPY COMMAND.COM C:\COMMAND.COM
Zur Sicherheit sollte dieser Kopie das Attribut "nur lesen" verliehen werden:
ATTRIB +R COMMAND.COM
Nun dürfte es keine Probleme beim Anlegen von Startdisketten mehr geben.

MOMPLS - Der Bildschirmschoner

Ein Bildschirmschoner ist ein Programm, das nach einer gewissen Zeit ohne Eingaben den Bildschirm schwarz schaltet, bis der Anwender wieder eine Taste drückt. Dadurch wird vermieden, daß sich das angezeigte Bild bei längerer unveränderter Anzeige in die fluoreszierende Schicht des Monitors "einbrennt". Damit der Anwender keinen Schrecken bekommt, wenn es auf dem Bildschirm plötzlich schwarz wird, enthalten viele Screen-Saver noch diverse Spezialeffekte wie Sternenhimmel oder andere Gags (Beispiel After Dark oder Scrantics).
Wer ohne Windows arbeitet, muß sich solche lebensverlängernde Software kaufen. Es geht aber auch zum Nulltarif: Die folgende Batchdatei MOMPLS.BAT stellt den kleinsten Screen-Saver dar:
@ECHO OFF
CLS
PAUSE
Sie kommt ganz ohne ESC-Sequenzen aus und ist daher auch nicht auf den Treiber ANSI.SYS angewiesen. Zugegeben, das automatische Einschalten nach einiger Zeit beherrscht unsere Lösung nicht. Dafür ist das Programm aber unschlagbar billig. Durch Eingabe von
MOMPLS
(die Abkürzung steht für "ONE MOMENT, PLEASE") wird der Bildschirm gelöscht, nur noch der blinkende Cursor ist zu sehen. Erst ein Tastendruck holt den PC aus seinem Dornröschenschlaf zurück - Sie können wie gewohnt weiterarbeiten.
Dieser Trick funktioniert übrigens auch aus allen Anwenderprogrammen heraus, die die Möglichkeit geben, an MS-DOS Kommandos zu geben. Bei WORD ist das beispielsweise über den Befehl ESC Bibliothek Betriebssystem möglich. Geben Sie hier MOMPLS ein. Aus dBase genügt RUN MOMPLS, um den selbstgestrickten Bildschirmschoner zu aktivieren.

Farbe bekennen, DOS!

Weiß auf schwarz, farblos und nüchtern - so kennt man den "Schaufelraddampfer" MS-DOS 5.0. Doch dieses Betriebssystem kann auch anders. Um dem DOS Farbe zu entlocken, muß man nur den Treiber ANSI.SYS in COMMAND.COM einbinden und dann in AUTOEXEC.BAT den DOS-Prompt umdefinieren. Das geht ganz einfach.
Laden Sie mit dem Befehl
EDIT COMMAND.COM
erst diese erste Steuerdatei in den DOS-eigenen Editor. Falls darin die Zeile
DEVICE = C:\DOS\ANSI.SYS
noch nicht enthalten ist, fügen Sie sie ein. Speichern Sie das File und verlassen den Editor. Jetzt wird mit
EDIT AUTOEXEC.BAT
diese Datei modifiziert. Wir müssen den DOS-Prompt ändern. Suchen Sie die Zeile, die mit PROMPT beginnt, üblicherweise wird es sich um folgende Zeile handeln:
PROMPT $P$G
Setzen Sie vor das Schlüsselwort PROMPT den REM-Befehl. Er macht diese Zeile unwirksam. Fügen Sie eine Leerzeile ein und schreiben in diese folgenden Befehl:
PROMPT $E[s$E[H$E[1;33;44m$E[K$E[1C$P$E[1;36H$T$H$H$H$E[1;66H$D$E[0;37;40m$E[uCommand$G
Die eckige Klammer läßt sich per ALT 91 eingeben. Nachdem auch diese Datei gespeichert wurde, muß der Computer neu gestartet werden, damit DOS die Modifikationen registriert. Jetzt können Sie den neuen Prompt bewundern: eine blau hinterlegte Zeile mit gelben Lettern, die am oberen Bildschirmrand den aktuellen Pfad, Zeit und Datum angibt. Der eigentliche Prompt wurde auf das Wort "Command" reduziert. Die Uhrzeit wird natürlich nur dann aktualisiert, wenn Sie RETURN drücken. Experimentieren Sie ruhig ein wenig mit dem komplizierten Parameter hinter PROMPT! $P gibt das aktuelle Laufwerk und den aktuellen Pfad an, $T blendet die Uhrzeit ein und $D das Datum. $H löst einen Rückschritt (Backspace) aus. Das Größerzeichen verdanken Sie dem $G ganz am Ende. Der Code $E steht dabei für Escape, die eckige Klammer dahinter kündigt ein Kommando zur Steuerung des Bildschirms an. Diese Codes werden von ANSI.SYS ausgewertet. Dabei gibt es im wesentlichen folgende Möglichkeiten:
ESC [ s Cursorposition speichern
ESC [ u Cursorposition wiederherstellen
ESC [ ... H Cursorposition setzen
ESC [ ... m Vorder- und Hintergrundfarbe setzen
ESC [ ... C Cursor nach rechts verschieben
ESC [ K Cursorzeile löschen
Weitere Informationen zu den Escape-Kommandos finden Sie unter dem Stichwort ANSI.SYS in der MS-DOS-Hilfe (einfach HELP ANSI.SYS eingeben).

Der INPUT-Befehl

DOS besitzt einen Speicherbereich, in dem Umgebungsvariablen abgelegt sind. Dazu gehören neben den Stringausdrücken, die mit SET= definiert sind, auch Systemangaben wie das Aussehen des DOS-Prompts oder der Suchpfad PATH. Aber auch Anwenderprogramme können Informationen in diesem Speicherbereich hinterlegen. Manchen Programmen, etwa Windows, wird über die Environment-Variable TEMP mitgeteilt, an welcher Stelle (in welchem Unterverzeichnis) temporäre Dateien während des Betriebs der Textverarbeitung abgelegt werden sollen.
Soll aus einem Stapelprogramm heraus der Wert einer solchen Variable geändert werden, so bietet sich das kleine Hilfsprogramm INPUT.BAT an (funktioniert unter Umständen nicht mit allen DOS-Versionen):
@ECHO OFF
@SET inp=c:\
@IF '%zwmal%' == 'x' GOTO zwmal
@COPY %inp%input.bat %inp%zwmal.bat > %inp%tmp.tmp
@ECHO ESC[1AESC[13;26;13p
@COPY CON %inp%input.$$$ > %inp%tmp.tmp
@ECHO ESC[13;13p
@IF EXIST %inp%input.$$$ TYPE %inp%input.$$$ » %inp%zwmal.bat
@IF EXIST %inp%input.$$$ DEL %inp%input.$$$
@SET zwmal=x
@CALL %inp%zwmal.bat %1
@DEL %inp%zwmal.bat
@IF EXIST %inp%tmp.tmp DEL %inp%tmp.tmp
@SET zwmal=
@ECHO ESC[4A
:zwmal
@IF NOT '%zwmal%' == 'x' SET inp=
@IF '%zwmal%' == 'x' SET %1=
Damit dieses Programm funktioniert, muß mit folgender Zeile der Treiber ANSI.SYS in der CONFIG.SYS geladen werden:
DEVICE = C:\DOS\ANSI.SYS
Er sorgt dafür, daß die ESC-Sequenzen richtig interpretiert werden. Geben Sie im Listing an den Stellen, an denen ESC steht, nicht diesen Text ein, sondern betätigen, während Sie die ALT-Taste gedrückt halten, die Tasten 2 und 7 nacheinander auf der numerischen Tastatur (Ziffernblock). Lassen Sie ALT dann los, wird der Escape-Code (Code 27) in den Text eingefügt. Manche Editoren zeigen dafür einen Pfeil nach links an. Verwenden Sie zur Eingabe beispielsweise das Textprogramm WORD, müssen Sie den Text im Format "nur Text" speichern (Dateiname INPUT.BAT). Leider ist es weder mit dem Editor des Norton-Commander, noch mit dem MS-DOS-Editor EDIT möglich, den Escape-Code einzugeben.
Außerdem muß der Platz für die Umgebungsvariablen ausreichend bemessen sein. Reicht der Platz nämlich nicht, legt DOS die Variable nicht an, weist den Programmierer aber auch nicht auf diesen Umstand hin. Um den Speicherplatz zu erhöhen, genügt es, die Zeile in der CONFIG.SYS, die den DOS-Interpreter aufruft, wie folgt zu modifizieren:
SHELL=C:\COMMAND.COM /E:512 /P
Die Zahl hinter /E: gibt die Größe des Bereichs für Environment-Variablen in Byte an. Sollte INPUT.BAT nicht im Hauptverzeichnis stehen, muß hinter dem SET-Befehl in Zeile 2 der entsprechende Pfad stehen.
Eine mögliche Anwendung für dieses Tool finden Sie im Folgenden:
@ECHO OFF
:nochmal
ECHO Bitte geben Sie das temporäre Verzeichnis ein:
CALL input temp
ECHO Temporäres Verzeichnis: %temp%
ECHO Einstellung OK? (ja/nein)
CALL input antwort
IF NOT '%antwort%' == 'ja' GOTO nochmal
Hier wird das bereits erwähnte Verzeichnis für temporäre Dateien neu gesetzt. Eine komfortable Möglichkeit also, in Batchfiles Eingaben zu verlangen.

Move

Unter DOS gibt es keinen Befehl zum Verschieben von Dateien in ein anderes Unterverzeichnis oder auf einen anderen Datenträger. Mit Hilfe der folgenden Batchdatei MOVE.BAT läßt sich dieses Manko beseitigen:
COPY %1 %2
DEL %1
Die Funktion wird aufgerufen mit dem Befehl
MOVE <Dateiname, evtl. mit altem Pfad> Dateiname mit neuem Pfad
Also zum Beispiel so:
MOVE BRIEF.TXT C:\WORD\TEXTE\BRIEFE\BRIEF.TXT
Das Stapelprogramm kopiert erst das Dokument per COPY-Befehl an die gewünschte neue Stelle und löscht es dann im alten Verzeichnis.
Diese Version birgt noch einige Fallen: Zum Beispiel müssen Sie aufpassen, daß der neue Pfad korrekt angegeben wird und auch existiert. Wenn nicht, wird nicht kopiert, die Datei aber dennoch gelöscht. Das gleiche Problem tritt auf, wenn sich das File schon an der gewünschten Zielposition befindet.
Die folgende erweiterte Version von MOVE.BAT ist da schon um einiges sicher. Bitte geben Sie die Texte nach REM nicht ein!

IF "%1" == "" GOTO ABBRUCH REM Kein Dateiname
IF "%2" == "" GOTO ABBRUCH REM Keine Pfadangabe
IF NOT EXIST %2\NUL GOTO ABBRUCH REM Pfad nicht vorhanden
IF EXIST %2%1 GOTO ABBRUCH REM Zieldatei existiert schon
IF EXIST %2\%1 GOTO ABBRUCH REM Zieldatei existiert schon
COPY %1 %2
DEL %1
:ABBRUCH
REM
Durch diese Abfragen dürften alle Möglichkeiten der Fehlbedienung abgefangen sein. Die Kommentare hinter den REMs könnten Sie eventuell dazu benutzen, das Programm noch mit einer Fehlerausgabe zu versehen, die bei Störungen in Kraft tritt.

Nikolaus M. Heusler