Windows 95
Formatieren mit Rückfrage per DLL-Funktion
Antwort
Im Kontextmenü von Laufwerken (rechter Mausklick
auf das entsprechende Icon) finden Sie unter anderem
den Eintrag »Formatieren«. Wenn Sie diesen Befehl
auf eine Diskette anwenden, geht Windows 95 nach einem
Klick auf »Starten« sofort zur Sache und überprüft nicht, ob
die betroffene Diskette bereits Daten enthält.
Dies kann aber zu ungewolltem Datenverlust führen,
wenn eine nicht beschriftete, aber bereits benutzte Diskette
versehentlich in einen Stapel unbenutzter Disketten gerät
oder wenn gebrauchte Disketten reformatiert werden. Aber
wie bringt man Windows dazu, vorher die Diskette zu prü-
fen? Das kleine Batch-Utility »S_FORMAT.BAT« im nebenstehendem Kasten ist eine
Lösung. Windows 95 hält eine Schnittstelle bereit, um aus Batchdateien heraus auf 32-
Bit-Funktionen des Windows-API zuzugreifen, und zwar mit Hilfe der Datei
»RUNDLL-32.EXE«. Damit ist es möglich,
bestimmte DLL-Funktionen aufzurufen vorausgesetzt,
man kennt die Syntax des Funktionsaufrufs. Für die Formatierung ist es die Funktion
»SHFormatDrive« aus
der Datei »SHELL32.DLL«. Die Funktion wird ohne Parameter aufgerufen, wodurch
sich der Aufruf besonders einfach gestaltet: »rundll32.exe shell32.dll,SH-FormatDrive«


Erstellen Sie also die Batchdatei »S_FORMAT.BAT« ge-
mäß obenstehendem Listing und kopieren diese in ihr Batchverzeichnis. Dann stellen Sie
zu der neuen Datei
»S_FORMAT.BAT« eine Veknüpfung auf dem Desktop
her: Wechseln Sie im Explorer in Ihr Batchverzeichnis und
ziehen die Datei mit der rechten Maustaste auf den Desk-
top. Nach dem Loslassen der rechten Maustaste wählen Sie »Verknüpfung(en) hier
erstellen«. Im Kontextmenü der
neuen Verknüpfung markieren Sie zum Abschluß noch
unter »Eigenschaften | Programm« das Kästchen »Beim
Beenden schließen«. Ein Doppelklick auf das Icon der Verknüpfung startet
»S_FORMAT«. Die Batchdatei
stellt zuerst mit Hilfe des XCOPY-Befehls (mit dem Schalter »/L«) fest, ob die Diskette
in Laufwerk A: Daten enthält. Ist das der Fall, werden diese mit dem Explorer
angezeigt. Danach müssen Sie entscheiden, ob Sie die Diskette trotzdem formatieren
wollen oder nicht. Befinden sich
keine Dateien auf der Diskette, wird die Formatierroutine
von »SHELL32.DLL« sofort gestartet. Das Listing ist auf Laufwerk A: zugeschnitten.
Es kann aber auch sehr leicht für die Arbeit mit dem Diskettenlaufwerk B: abgeändert
werden. Batchdatei S_FORMAT.BAT
@echo off
::Sind Daten vorhanden?
xcopy32 A:\*.* /L >NUL
if errorlevel 1 goto format
::Daten vorher zeigen
start explorer /e, A:
choice Diskette enthält Daten, trotzdem formatieren
if errorlevel 2 exit
::DLL-Routine starten
:format
start /w rundll32.exe shell32.dll,SHFormatDrive