Jens Home: MS-Dos Geheimnisse

Auf dieser Seite habe ich einige unbekannte, vergessene, nützliche oder undokumentierte Funktionen, die den Umgang mit dem immer noch wichtigen Betriebssystem MS-DOS erleichtern, zusammengestellt.

Zuerst etwas ganz einfaches für Neulinge, oder Menschen, die gar nicht wissen, dass alle Windows Versionen außer Windows NT/2000/XP noch unter Dos laufen. Wenn beim Start steht Windows xx wird gestartet, drücken Sie einfach F8 um ins Bootmenü zu gelangen und dann Shift+F5. Dann sind Sie in purem Dos, das ist nicht der Fall, wenn Sie command.com oder MS-Dos Eingabeaufforderung unter Windows starten.

1. Relatives Kopieren
2. Dateien erstellen ohne Editor
3. Dir-parameter festlegen
4. Command.com parameter
5. Erstellen einer Ramdrive
6. Eigene Startmenüs beim start
7. Was hat es mit ctty auf sich?
8. Dos 6.22 Hilfe
9. Subst.exe
10. Computer in Dos ausschalten lassen
11. Master Boot Record neu Schreiben lassen
12. Undokumentierter Ver Parameter
13. Verzeichnis mit aktuellem Datum erstellen
14. USB Sticks oder Laufwerke unter DOS
15. Format /U
16. NTFS Vollzugriff auf Laufwerke
17. Netzwerkzugriff speicherschonend nur als Client
18. Variablen in batch-Dateien
19. Übergabeparameter
20. Ausgabe umlenken


1. Relatives Kopieren

Normalerweise wird in Dos mit absoluten Pfaden kopiert. Es kann aber, bei langen Pfaden, oder in Batchdateien einfacher sein, wenn man relative Pfade benutzt. Das geht ganz einfach:

c:\windows\command> copy command.com ..\temp

Dies kopiert die Datei command.com nach c:\windows\temp. Dies funktioniert auch über mehrere Ebenen: Für jedes Verzeichnis mehr einfach ein weiterer Punkt. Auch mit dem Befehl cd geht dies:

c:\windows\profiles\benutz\desktop\ordner\uordner> cd .....

Hiermit kommen Sie auf c:\windows. Dies (mehr Punkte als ..) funktioniert nicht mehr ab Windows XP. Hier muss mann ..\..\.. bemühen.

2. Dateien erstellen ohne Editor

In Dos lassen sich Dateien ohne einen Editor erstellen, wenn Sie auf einer Startdiskette zum Beispiel keinen haben. Mit dem Befehl

copy con datei.txt

ist dies möglich. Nun können Sie den Text tippen. Wenn Sie fertig sind, drücken Sie STRG+Z und Enter um abzuschließen. Nun hat die Datei den Inhalt, den Sie auch ohne Editor mit dem Befehl type datei.txt anzeigen lassen können.

"Con" bezeichnet hier das Gerät, nämlich die "Konsole". Sie können genauso ein Modem eine Nummer wählen lassen, indem Sie in eine Datei (hier z.b. wnum.txt) den Befehl fürs Wählen und die Nummer schreiben (z.b. ATDT 12345). Dann wählt das Modem die Nummer mit dem folgenden Befehl:

copy wnum.txt com1

3. Dir Parameter festlegen

Es ist Ihnen zu blöd, immer beim Benutzen von DIR /p zu schreiben um alle Dateien ruhig anzuschauen. Sie können in der Variable "dircmd" das Standardverhalten von Dir festlegen. Am besten setzten Sie sie in der Autoexec.bat immer am Start.

set dircmd=/ogn /p

So wird es immer seitenweise angezeigt, und nach Namen sortiert, die Verzeichnisse aber zuerst.

4. Command.com Parameter

Der Dos Befehlsinterpreter command.com hat einige interessante Parameter, die auch nicht mit command /? erklärt werden.
Command /k lässt z.b. eine eigene Datei anstatt der Autoexec.bat festlegen. Schreiben Sie dann in der Config.sys:

Shell=Command.com /k c:\start.bat

Command /z liefert nach jedem Befehl den Errorlevel, auch nützlich bei der Erstellung von Batchdateien.
Mit command /p lässt sich command.com nicht mehr beenden durch exit.

5. Erstellen einer Ramdrive

Es lässt sich mit der Datei ramdrive.sys ein Laufwerk erstellen, dessen Dateien im Ram gespeichert sind. es ist also sehr schnell, aber nach einem Neustart sind die Dateien verloren.
Schreiben Sie dafür in die config.sys z.b.

DEVICE=C:\Windows\RAMDRIVE.SYS 2048 512 256 /e

Die Zahl 2048 bezeichenet hier die Größe der Ramdisk im Kilobyte, der Parameter /e erstellt sie im erweiterten Speicher, dazu sollte himem.sys geladen sein. Die Ramdisk wird an einem freien Laufwerkbuchstaben erstellt, sie kann auch unter Windows als normales Laufwerk benutzt werden.

6.  Eigenes Menü beim Start erstellen

Sie können ein Menü erstellen, dass beim Start verschiedene Auswahlmöglichkeiten ermöglicht, z.b. Windows oder dos oder so. Dazu schreiben Sie als erste Zeilen in der Config.sys:

[Menu]
menuitem=Windows
menuitem=Dos
menuitem=Speicher
menudefault=Windows,3


Dies erstellt ein Menü mit den 3 Einträgen, und wählt nach 3 Sekunden automatisch Windows aus. Die Config.sys unterscheidet dann folgendermaßen zwischen den Auswahlen:

[Common]
Sachen die bei allen vorkommen sollen

[Windows]
device=c:\windows\himem.sys
Country=049,850,c:\windows\COMMAND\country.sys

[Dos]
device=c:\windows\COMMAND\display.sys con=(ega,,1)
DEVICEHIGH=C:\CDROM\GSCDROM.SYS /D:MSCD000 /v

[Speicher]

Wenn Windows Ausgewählt wird werden nur von Windows benötigte Dateien geladen, bei dos, der Cdrom Treiber für dos. Speicher läd gar keine Treiber unter Dos, wenn viel Arbeitsspeicher benötigt wird.
In der Autoexec.bat wird folgendermaßen zwischen den ausgewählten Einträgen unterschieden:

goto %config%

:Windows
@PATH c:\windows;c:\windows\COMMAND
SET BLASTER=A220 I5 D1 T4
keyb gr
mode con codepage prepare=((850) c:\windows\COMMAND\ega.cpi)
mode con codepage select=850
win
goto Ende

:Dos
set dircmd=/ong /p
c:\cdrom\mscdex.exe /d:mscd001
goto Ende

:Speicher
set dircmd=/ong /p

:ende

 7. Was hat es mit ctty auf sich

Der Befehlt ctty ist etwas seltsam. Wenn man ihn aufruft, kann man nichts mehr eingeben. Ctty lenkt sie Steuerung auf ein anderes Gerät um. So kann man in Batchdateien Unterbrechungen durch die Tastatur vermeiden. Man darf aber nicht vergessen am Ende mit ctty con wieder der Konsole die Kontrolle zu übergeben.

8. Dos 6.22 Hilfe

Eine nützliche Dos-Hilfe ist die Help.exe von Dos 6.22. Diese kann auch in neueren Dos-Versionen weiterbenutzt werden, man muss nur die Dateien help.exe, help.hlp und qbasic.exe kopieren; diese gibt es auch noch auf der Windows 95 CD unter \oldmsdos.
Übrigens hat man hier mit Qbasic auch eine vollwertige Basic-Programmiersprache zur Verfügung...

9. Subst.exe

Die Datei Subst.exe ist ganz nützlich, um neue "pseudo" Laufwerke zu erstellen. Man kann mit ihrer Hilfe ein beliebiges Verzeichnis mit einen neuen Laufwerksbuchstaben verknüpfen. Die Bedienung ist ganz einfach: subst k: c:\programme sorgt dafür, dass im Laufwerk k der Inhalt von Programme sichtbar ist. Subst k: /d hebt diese Verknüpfung wieder auf. Mehr Infos: subst /?

10. Computer in Dos ausschalten lassen

Für DOS-Fremde ist es seltsam, dass man in DOS den PC einfach so "brutal" ausschalten muss. Wenn man ein ATX Mainboard hat, und auch Windows auf der Platte hat, kann man einfach mit dem undokumentierten Aufruf win /z den Computer ausschalten lassen. Win /wx erzeugt einen Neustart.

11. Master Boot Record neu schreiben lassen

Wenn der Master Boot Record einer Festplatte neugeschrieben werden muss, weil ihn vielleicht ein Bootvirus infiziert hat, geht das zum Beispiel mit sys a: c: wenn eine bootbare Diskette eingelegt ist. Er kopiert aber dann auch command.com und andere Dateien wie io.sys mit.
In diesem Fall ist es einfacher und besser, wenn man einen undokumentierten Parameter des Festplattenpartitionierers Fdisk benutzt:
Fdisk /mbr
Achtung: Dadurch können Bootmanager gelöscht werden.

12. Undokumentierter Ver Parameter

Der Befehl Ver zeigt die Dos/Windows Version an. Der undokumentierte Befehl ver /r zeigt auch die Revision Version an, und in welchem Speicherbereich command.com sich befindet.

13. Verzeichnis mit aktuellem Datum erstellen

Sie wollen automatisch ein Verzeichnis/Ordner erstellen, dass als Namen das aktuelle Datum hat?
Seit Windows XP gibt es die Systemvariable %date% mit aktuellem Datum, dort reicht also md %date%. In früheren Versionen funktioniert dies dieser Code in einer .bat Datei:

@echo %dbgn% off
for %%v in (md cd) do %%v @tmp@
echo @prompt set _D=$D$_> ~tmpA.bat
%comspec% /e:2048 /c ~tmpA.bat > ~tmpB.bat
call ~tmpB.bat
echo set DOW=%%DD%%> ~tmpA.bat
echo set DD=%%MM%%>>~tmpA.bat
echo set MM=%%YYYY%%>>~tmpA.bat
echo set YYYY=%%1>>~tmpA.bat
for %%v in (%_D%) do call ~tmpA.bat %%v
echo @prompt set MM=$%MM%$_set YYYY=$%YYYY%$_>~tmpA.bat
%comspec% /e:2048 /c ~tmpA.bat > ~tmpB.bat
for %%v in (~tmpB.bat del) do call %%v ~tmp?.bat
for %%v in (cd.. rd.\@tmp@) do %%v
echo YYYY=%YYYY% MM=%MM% DD=%DD% DOW=%DOW%

md %yyyy%
Alternativ kann ich auch folgende EXE-Datei anbieten, welche ein Verzeichnis im aktuellen Datumsformat in der Form YYYYDDMM erstellt: MKDIRDAT.EXE.

14. USB Sticks oder Laufwerke unter DOS

Man glaubt es kaum, womit Windows 98 (4.10.1998) noch Probleme hat, funktioniert sogar unter DOS: das Lesen eines USB-Sticks oder eines externen USB-Laufwerks.
Eine "Musterlösung" gibt es aber nicht, je nach Hardware kann es aber mit folgendem Treiber klappen:
USB Aspi Treiber für Dos. Die zwei Dateien entpackt man und kopiert sie auf den betroffenen Computer. Dann muss nur noch die config.sys um folgende Zeilen ergänzt werden:

device=USBASPI.SYS
device=Di1000dd.SYS
und nach dem nächsten Start mit eingestecktem USB Gerät sollte dieses als neuer Laufwerksbuchstabe verfügbar sein.
Ein Versuch ist auch folgender Treiber wert: Duse USB driver.

15. Format /U

Durch format /u (u=Unconditional) wird ein Datenträger völlig gelöscht, jedes Byte wird überschrieben, so dass die Inhalte nicht mehr wiederherstellbar sind.

16. NTFS-Zugriff unter Dos

Der Vorteil von DOS war, dass man auch bei kaputten oder verseuchten Windows-Systemen unabhängig an seine Daten gelangen konnte. Mit dem immer mehr verbreiteten Dateisystem NTFS ist es für DOS nicht mehr von selbst möglich diese Datenträger zu lesen.

Avira hat eine Bootdiskette mit einem Tool zum NTFS-Vollzugriff unter DOS veröffentlicht, dass dieses Problem löst: Avira NTFS4DOS

17. Netzwerkzugriff speicherschonend nur als Client

Nutzt man net start nur zum Zugriff auf SMB-Netzwerkfeigaben von DOS aus, ohne selbst Freigaben anzubieten, kann man den Arbeitsspeicherverbrauch senken, indem man den Aufruf in net start basic abändert.

18. Variablen in batch-Dateien

Variablen werden mit set belegt und mit %var% ausgelesen.
Beispiel:

set myvar=1234
echo Der Inhalt von myvar ist: %myvar%
Man kann Texte in Variablen auch ersetzen, die Syntax ist set neuevar = %altevar:such=ersetz%.
Beispiel:
set myvar=Heute regnet es.
echo %myvar:regnet=schneit%
Die Ausgabe wäre: Heute schneit es.
Entsprechend kann man Teile löschen indem man schreibt %var:such=%. Auch der * als Wildcard ist bei der Suche möglich.

19. Übergabeparameter

Man kann einer Batch-Datei beim Aufruf Argumente übergeben. Wenn ich aufrufe test.bat 123.txt 456.out dann ist die Variable %1 in test.bat belegt mit 123.txt, %2 mit 456.out usw. Das geht bis %255. %* enthält alles Übergebene. %0 ist die Batchdatei selbst.

Man kann Dateivariablen in ihre Teile zerlegen. Wenn in %1 ein Dateiname steht, dann gibt %~f1 den absoluten Pfad zurück, %~d1 den Laufwerksbuchstaben, %~n1 nur den Dateinamen, %~x1 nur die Endung mit Punkt, %~t1 das Änderungsdatum der Datei, %~z1 die Größe und %~1 entfernt evtl. vorhandene Anführungszeichen.

20. Ausgabe umlenken

Die Ausgabe eines aufgerufenen Programms kann in eine Datei umgelenkt werden.
dir > dateien.txt Erstellt eine Datei dateien.txt mit der Ausgabe des dir-Befehls. Ein Umlenken in die "Datei" NUL sorgt dafür, dass die Ausgabe untersrückt wird. Mit >> wird die Zieldatei nicht überschreiben sondern ergänzt. Mit < wird der Inhalt der Datei dem aufgerufenen Programm übergeben.
Aufgerufenen programme unterschieden oft zwischen der Ausgabe und der Fehlerausgabe. befehl > dateiA 2> dateiB lenkt die Fehlerausgaben in DateiB, die normalen Ausgaben in DateiA. Mit | kann die Ausgabe eines Programms als Eingabe des nächsten dienen.
Beispiele:
echo hallo > test.txt Erzeugt eine Datei test.txt mit Inhalt hallo.
SORT < namen.txt > namensortiert.txt Erzeugt eine alfabetisch sortierte Version von namen.txt als namensortiert.txt
ECHO j | DEL *.txt Übergibt die Bestätigung J an die Löschabfrage. (Nur als Beispiel, keine gute Idee da der Buchstabe je nach Systemsprache anders ist. Ein del /q schaltet die Rückfrage auch aus).


Zurück nach oben
Zurück zur Computerseite
Zurück zur Hautptseite von Jens Home


Diese Seite ist Copyright © Jens Müller
Ich bin nicht für mögliche Datenverluste/Schäden verantwortlich, die durch diese Seiten entstehen könnten. Sie sind für Ihr Handeln selbst verantwortlich.