Tipps + Tricks

zum Inhaltsverzeichnis

Schnelles Einstellen von Datum und Uhrzeit

Die DOS-Befehle "date" und "time" fordern nach der Ausgabe des aktuellen Datums bzw. der aktuellen Uhrzeit zu einer Neueingabe dieser Einstellungen auf. Diese muss mit der Enter-Taste bestätigt (bzw. übergangen) werden. Die folgenden Befehle erfordern keine Eingabebestätigung, können also auch in einer Batch-Datei verwendet werden:

echo 28.1.2008 | date
echo 20:22:40 | time

zum Inhaltsverzeichnis

Alle Suchpfade im PATH-Eintrag abklappern

Der PATH-Eintrag in der AUTOEXEC.BAT enthält i.d.R. mehrere Verzeichnispfade, die durch ein Semikolon (;) voneinander getrennt sind. Soll z.B. mit dem DIR-Befehl nur in diesen Verzeichnissen nach einer bestimmten Datei gesucht werden, müsste der PATH-Eintrag eigentlich in seine einzelnen Pfade zerlegt werden und der DIR-Befehl dann nacheinander mit jedem dieser Einzelpfade aufgerufen werden. Und das geht mit einer einzigen Code-Zeile:

for %%n in (%path%) do dir %%n\gesucht.txt

DOS zerlegt den PATH-Eintrag ganz von selbst in seine Einzelpfade, denn neben dem bekannten Leerzeichen ist auch das Semikolon ein Trennzeichen. Das gilt auch für Tabulatoren und Kommata. Deswegen funktionieren auch solche kuriosen Befehle wie:

copy;quell.txt;ziel.txt oder ,dir,

Hinweis: Die %path%-Variable wird nur in Batch-Dateien interpretiert.

zum Inhaltsverzeichnis

Wechsel ins Verzeichnis der laufenden Batch-Datei

Oftmals ist es wichtig, dass beim Start einer Batch-Datei ein bestimmtes Verzeichnis geöffnet ist, damit z.B. relative Pfadangaben in der Batch-Datei funktionieren o.ä. Die Variable %0 liefert den vollständigen Dateipfad der gerade laufenden Batch-Datei. Das Problem ist, den Dateinamen vom Pfad abzuschneiden, um an den "reinen" Verzeichnispfad zu kommen. Dies erledigt DOS jedoch von selbst:

CD %0\..

Was passiert? DOS versucht gar nicht erst, in das (nicht vorhandene) Verzeichnis %0 zu wechseln, um von dort nach .. zu schalten. Vielmehr wird die Pfadangabe "entrelativiert" (in einen absoluten Pfad umgewandelt), bevor sie der CD-Befehl überhaupt zu sehen bekommt. Aus C:\BATCH\MYBATCH.BAT\.. wird also C:\BATCH. Dieser Trick funktioniert auch mit einem weiteren Dateipfad, nämlich der Umgebungsvariablen COMSPEC, die den Pfad zur aktiven COMMAND.COM enthält:

CD %COMSPEC%\..

Hinweis: Beide Befehle funktionieren nur in Batch-Dateien

zum Inhaltsverzeichnis

CleanDisk selbstgebaut

Mit ganzen 14 Zeilen Batch-Code können Sie sich gewisse "Utilities" zum Reinigen Ihrer Festplatte von lästigen TMP-, SIC- und BAK-Dateien sparen. Schreiben Sie folgenden Code in eine Batch-Datei mit dem Namen CLEANDSK.BAT und achten Sie dabei unbedingt auf die Groß- und Kleinschreibung!

@echo off
TYPE %0 | find "DEL" | find "TYPE" /v > a.bat
attrib %1 -h -r +a /s
attrib %1 /s > deltemp.bat
call deltemp.bat
del deltemp.bat
del a.bat
Goto Ende
DEL %1 /p
type DELtemp.bat | find /v /i "%1" > deltemp.tmp
DEL deltemp.bat
ren DELtemp.tmp deltemp.bat
DELtemp.bat
:Ende

Wenn Sie Cleandsk unter New-DOS einsetzen, muss anstelle von a.bat der Dateiname a-----.bat und unter DR-DOS --a---.bat angegeben werden. Starten Sie z.B. das Löschen aller Dateien mit der Endung .TMP auf Festplatte C: mit folgendem Befehl:

cleandsk c:\*.tmp

zum Inhaltsverzeichnis

del *.* ohne Sicherheitsabfrage

Der Befehl "del" zum Löschen von Dateien tut seine Arbeit in der Regel ohne Rückfrage. Nur wenn *.* als Datei-Maske angegeben wird, fragt "del", ob es wirklich alle Dateien löschen soll. Da solche Unterbrechungen in Batch-Dateien meist unerwünscht sind, lassen Sie DOS diese Frage einfach selbst mit "J" (=Ja) beantworten:

echo J | del *.*

zum Inhaltsverzeichnis

Schleifenzähler in Batch-Dateien

Das folgende Code-Fragment führt den (Dummy-) Befehl "echo ..." fünfmal hintereinander aus. Möglich sind Wiederholraten bis zu etwa 100.

set counter=
:Nochmal
echo Counter-Stand: %counter%
set counter=%counter%x
if not (%counter%) == (xxxxx) goto Nochmal
set counter=

Anstelle des "echo"-Befehles setzen Sie den Code, der mehrmals ausgeführt werden soll. Der Trick beruht darauf, dass an die Umgebungsvariable "counter" bei jedem Schleifendurchlauf der Buchstabe "x" angehängt wird, bis die Variable die Zeichenkette "xxxxx" enthält (also 5 Zeichen lang ist).

zum Inhaltsverzeichnis

Batch-Programm vorzeitig beenden

Batch-Programme sollten vor der Ausführung der eigentlichen Befehle die korrekte Eingabe der Parameter oder das Vorhanden von Dateien prüfen und im Fehlerfall abbrechen. Oder Sie wollen während der Testphase an beliebiger Stelle einen Abbruchpunkt setzen. Anstatt jedoch jedesmal mit GOTO-Befehlen an das Ende der Batch-Datei zu springen, sieht ein echter HALT-Befehl nicht nur professioneller aus, sondern ist auch bequemer zu handhaben.

Schreiben Sie folgenden Dummy-Befehl in eine Batch-Datei namens HALT.BAT und speichern Sie sie in einem DOS-Pfad (siehe PATH-Eintrag in autoexec.bat):

@echo off

Um die Ausführung einer Batch-Datei vorzeitig zu beenden, fügen Sie dort folgenden Befehl ein:

Halt

oder, wenn z.B. nur abgebrochen werden soll, wenn ein Kommandozeilen-Parameter fehlt:

if (%1) == () Halt

zum Inhaltsverzeichnis

Batch-Datei für eine bestimmte Zeit anhalten

Es gibt jede Menge Batch-Extender, mit denen man eine Batch-Datei für eine bestimmte Zeit anhalten kann. Aber es geht auch mit DOS-Bordmitteln. Schreiben Sie folgenden Zweizeiler in eine Batch-Datei namens SLEEP.BAT und speichern Sie sie in einem DOS-Pfad (siehe PATH-Eintrag in autoexec.bat):

@echo off
choice /c:xy /t:x,%1 > NUL

Um eine Batch-Datei z.B. für 10 Sekunden anzuhalten, fügen Sie dort folgenden Befehl ein (möglich sind Werte zwischen 0 und 99):

call sleep 10

Quelle: c't

zum Inhaltsverzeichnis

Leer-Datei erzeugen (auch mit "verbotenem" Namen)

Kurz und knapp:

rem > newfile.txt

Windows 9x: Als Webmaster braucht man manchmal eine Datei namens ".htaccess". Windows weigert sich jedoch, eine Datei mit einem führenden Punkt zu erzeugen. Anders die DOS-Box, in der Sie folgenden Befehl eingeben können, dessen Resultat dann auch Windows akzeptiert:

rem > .htaccess

Windows XP: Hier funktioniert der Trick mit dem rem-Befehl nicht mehr. Verwenden Sie statt dessen den echo-Befehl (den Punkt unmittelbar hinter echo nicht vergessen). Die Datei ist allerdings nicht ganz leer, sondern enthält einen Zeilenumbruch.

echo. > .htaccess

zum Inhaltsverzeichnis

ANSI-Code in ASCII-Editor bearbeiten

Texte, die unter Windows erstellt wurden, können in DOS-Editoren wegen der unterschiedlichen Darstellung von Umlauten, ß u.a. nicht vernünftig bearbeitet werden und umgekehrt. Zu diesem Zweck wurde das Freeware-Programm AnsiAsci entwickelt, welches Sie hier downloaden können. Im Downloadpaket finden Sie eine kleine Beispiel-Datei, die aus Ihrem gewohnten ASCII-Editor einen ANSI-Editor macht. Das Prinzip lässt sich auch auf andere Aufgaben übertragen, z.B. könnten Sie mit Ihrem Editor Dateien direkt in komprimierten Archiven editieren - ohne Entpacken und Packen.

zum Inhaltsverzeichnis

Schnellere Datenträger-Zugriffe

Fügen Sie folgenden Befehl in die Datei AUTOEXEC.BAT ein:

LH C:\DOS\SMARTDRV.EXE /X c+ a- b- d

Die Kleinbuchstaben am Ende dieses Befehles stellen die Buchstaben der in Ihrem PC befindlichen Laufwerke dar. "c+" bedeutet, dass Schreib- und Lesezugriffe auf die Festplatte C: von Smartdrv beschleunigt werden sollen. "d" ist in diesem Beispiel ein CD-ROM-Laufwerk. Da von CD nur gelesen werden kann, können auch nur Lesevorgänge beschleunigt werden. Dies wird durch Weglassen von "+" bzw. "-" erreicht.

"a-" und "b-" stellen zwei Disketten-Laufwerke dar. Das Minuszeichen zeigt an, dass keinerlei Beschleunigung erfolgen soll. Sinnigerweise wären gerade hier Beschleunigungsmaßnahmen besonders ergiebig. Leider treten hierbei desöfteren Ablauffehler auf, die zu Datenverlusten führen können. Wenn überhaupt, sollten Sie für Diskettenlaufwerke nur Lesevorgänge beschleunigen lassen (Parameter: /X c+ a b d).

Wichtig: Schalten Sie den PC niemals durch Herausziehen des Steckers oder Ausschalten aus, bevor Sie nicht alle Anwendungsprogramme geschlossen haben und zum DOS-Prompt zurückgekehrt sind! Neustarts sollten immer mit STRG+ALT+Entf durchgeführt werden. Andernfalls kann es zu Datenverlusten kommen. Wenn Sie hier ganz sicher gehen wollen, schalten Sie die Schreib-Beschleunigung für alle Laufwerke aus. (Parameter /X c a b d).

Trotz aller Wenns und Abers: Wenn Sie mit großen Datenmengen "hantieren", bringt der Einsatz von SmartDrv erhebliche Leistungsgewinne.

zum Inhaltsverzeichnis

Schneller Booten

Fügen Sie folgenden Befehl in die erste Zeile der Datei CONFIG.SYS ein:

switches=/F

Die Werbepause "Starte MS-DOS..." wird damit auf Null verkürzt.

zum Inhaltsverzeichnis

Der PC als Schreibmaschine

Sicher ist Ihnen folgender Befehl zum Drucken einer Textdatei geläufig:

type datei.txt > prn

Unter DOS gilt jedoch auch die Tastatur als Datei. Der folgende Befehl zur Simulation einer Schreibmaschine wirkt mit einem Nadeldrucker besonders echt.

type con > prn

Um das Blatt am Ende auszuwerfen, halten Sie die ALT-Taste gedrückt und geben Sie auf der numerischen Tastatur die Zahl 012 ein. Drücken Sie dann die Entertaste. Mit der Tastenkombination STRG+Z gelangen Sie wieder ans DOS-Prompt.

zum Inhaltsverzeichnis

Datum und Uhrzeit protokollieren

Mit der folgenden Batch-Datei speichern Sie das aktuelle System-Datum und die Uhrzeit in einer Datei (protocol.txt). Eingesetzt in der Autoexec.bat, können Sie z.B. überprüfen, wann der PC zum letzten mal gestartet wurde - ob also jemand während Ihrer Abwesenheit daran "herumgespielt" hat.

@echo off
echo Letzter Rechner-Start
echo ---------------------
type c:\protocol.txt
echo. | date | find "Gegenwärtig" > c:\protocol.txt
echo. | time | find "Gegenwärtig" >> c:\protocol.txt

Ab Windows 95 ff müssen Sie die beiden letzten Zeilen wie folgt abändern:

echo. | date | find "Aktuell" > c:\protocol.txt
echo. | time | find "Aktuell" >> c:\protocol.txt

zum Inhaltsverzeichnis

Boot-Viren plattmachen

Ein großer Teil der Computer-Viren manipuliert das sogenannte Master-Boot-Record von Festplatten. Um diesen Sektor wieder zu reparieren (also den Virus zu löschen), starten Sie den PC von einer virenfreien und schreibgeschützten Systemdiskette und geben am DOS-Prompt den Befehl:

fdisk /MBR

Das DOS-Programm fdisk.exe muss sich natürlich auf der Systemdiskette befinden.

zum Inhaltsverzeichnis

Editor und Hilfe ohne edit.com und help.com verwenden

Der Hintergrund: Die Befehle Edit und Help verwenden das Programm qbasic.exe. Ohne QBasic funktioniert keiner der beiden Befehle, ohne edit.com und help.com hingegen doch.

statt edit --> qbasic /EDCOM
statt help --> qbasic /QHELP

Nur für den Fall, dass die beiden genannten Programme auf Ihrer Systemdiskette fehlen sollten...

zum Inhaltsverzeichnis

Diskette in einem Rutsch formatieren

Das Befehl format fordert Sie mehrmals zu Bestätigungen auf, sodass erst mehrmals die Tastatur betätigt werden muss, ehe format endlich mit dem Formatieren beginnt. Ab MS-DOS 4.0 können Sie diese Abfragen mit dem Parameter /AUTOTEST unterbinden. Um auch sämtliche Bildschirmausgaben zu unterdrücken, verwenden Sie den Parameter /select. In beiden Fällen muss die Diskette bereits im Laufwerk liegen, bevor format gestartet wird.

format a: /AUTOTEST
format a: /select

Falls Sie bei Auftreten eines Fehlers eine Bildschirmmeldung erhalten wollen, sollten Sie den entsprechenden Format-Befehl in eine Batch-Datei eintragen und dort das Errorlevel abfragen.

zum Inhaltsverzeichnis

Leerzeichen in Datei- oder Verzeichnisnamen

Auch unter Good-Old-DOS sind Leerzeichen im Dateinamen möglich. Natürlich dürfen Sie nicht das echte Leerzeichen verwenden, sondern das sogenannte Hex-Blank. Dieses hat den ASCII-Code 255. Um das Zeichen einzugeben, halten Sie die ALT-Taste nieder und geben Sie auf der numerischen Tastatur die Zahl 255 ein.

zum Inhaltsverzeichnis

Unlöschbare Dateien

Kennen Sie das? Mit dem Programm undelete soll eine Datei namens "übermich.txt" wieder hergestellt werden. Undelete fordert Sie zur Eingabe des ersten Buchstabens des Dateinamens auf. Sie drücken Taste ü. Anschließend lässt sich diese Datei weder öffnen und schon gar nicht löschen. Hätten Sie Ü (also einen Großbuchstaben) eingegeben, wäre das Dilemma nicht passiert. Wie nun also diesen Zombie wieder loswerden? Verschieben Sie zunächst alle Dateien mit der Endung TXT in ein anderes Verzeichnis, sodass übermich.txt als einzige übrigbleibt. Dann geben Sie den Befehl:

ren *.txt neuname.txt

Anschließend verschieben Sie die anderen txt-Dateien wieder an ihren angestammten Platz zurück und löschen oder bearbeiten neuname.txt.

Hinweis: Dieser Bug in undelete trifft nicht auf alle DOS-Versionen zu.

zum Inhaltsverzeichnis

Vermeintlicher Bug des copy-Befehles

Bei Verwendung des Befehles copy kommt es hin und wieder vor, dass eine Datei nicht vollständig kopiert wurde. Dies passiert z.B. bei exe-, com- oder ähnlichen Binär-Dateien. Copy ermittelt wie in der PC-Steinzeit das Ende einer Datei anhand einer Ende-Markierung. Exe-Dateien enthalten im Gegensatz zu Text-Dateien jede Menge solcher Datei-Ende-Bytes. Beim Auffinden des ersten dieser Zeichen bricht copy mit dem Kopieren ab. Sie sollten daher generell den Parameter /b einsetzen, der das fehlerfreie Kopieren nach heutigen Regeln erzwingt:

copy /b *.* a:

Wichtig: /b muss immer als erster Parameter angeführt werden.

Nachtrag: bei neueren DOS-Versionen tritt dieser "Fehler" nur dann auf, wenn copy mehrere Dateien zu einer zusammenkopieren soll, z.B. mit copy datei1+datei2+datei3 datei4

zum Inhaltsverzeichnis

Datei ohne Editor bearbeiten

Verflixt: Rechner von Systemdiskette gebootet, und kein Editor an Bord. Und natürlich auch keine autoexec.bat. Doch zum Editieren einer Textdatei brauchen Sie nicht unbedingt einen Editor. Verwenden Sie einfach den Befehl COPY dazu.

copy con autoexec.bat
copy autoexec.bat+con autoexec.ba_
copy con+autoexec.bat autoexec.ba_

Mit dem ersten Befehl öffnen Sie eine leere Datei namens Autoexec.bat. In diese Datei kopieren Sie die "Tastatur" (Gerät CON). Schreiben Sie den Text also ganz normal und beenden Sie Ihre Eingabe mit der Tastenkombination STRG+Z (CTRL+Z). Beispiel zwei zeigt, wie Sie an eine bereits existierende autoexec.bat weiteren Text anhängen können - in Beispiel drei fügen Sie Text am Dateianfang ein. Die dabei entstehende Datei autoexec.ba_ müssen Sie anschließend noch umbenennen (ren autoexec.ba_ autoexec.bat).