Tipps + Tricks
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
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.
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
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
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 *.*
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).
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
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
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
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.
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.
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.
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.
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
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.
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...
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.
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.
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.
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
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
).