DOS-Corner Nikolaus Heusler PC go 05.09.94 02.18.94 Objekt: PC go! Ausgabe: diverse Rubrik: DOS-Corner Redakteur: Autor: Nicki Heusler, XXX/XXXXXX Datum: 7.05.94 Thema: Tips 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 kann er, ggf. nach einer Modifizierung, übernommen werden. Die Cursortasten dienen also zum Scrollen durch diese Liste - nach vorne und zurück. bringt Sie an den Anfang der Liste (erster gemerkter Befehl), 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 ein, um den Assembler zu starten. In die nun erscheinenden Zeilen geben Sie folgendes "Programm" ein, wobei ebenfalls nach jeder Zeile 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 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 zu entkommen, mit dem Erfolg, daß einfach die gleiche Meldung nochmal erscheint. Mit dem Buchstaben geht es auch nicht weiter. Erst 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 =