Computer & Technik
Betriebssysteme
DOS
MoveIt - Dateien verschieben
Die Reorganisation einer gut gefüllten Festplatte unter DOS ist regelmäßig eine schweißtreibende Angelegenheit. Denn DOS stellt standardmäßig keine Funktion zur Verfügung, um Dateien von einem Verzeichnis in ein anderes zu verschieben. Vielmehr ist jedesmal ein Kopieren und ein anschließendes Löschen nötig, bevor die Datei endlich im neuen Verzeichnis steht.
Dabei gibt es unter DOS eine durchaus mächtige Funktion zum Umbenennen von Dateien, die so ziemlich alles Umbennenen kann.
Da für DOS alle Datenamen nichts anderes als ein Eintrag im FAT sind, kommt das Umbennenen einem Bewegen gleich. DOS bedient sich intern der Funktion $56 zum Umbennen von Dateien. Ein Blick auf die Registerbelegung zeigt, daß diese Funktion bedeutend mehr kann, als das altbekannte REN.
Eingaben:
AH := $56;
DX := Ofs (alter Name);
DS := Seg (alter Name);
DI := Ofs (neuer Name);
ES := Seg (neuer Name);
Rückgabe:
AX = ErrorCode
wenn ODD(Flags);
Dieser internen DOS-Funktion ist es offenbar vollkommen egal, was sie übergeben bekommt. Sie benennt alles um, indem die Einträge im FAT geändert werden. Dies ist aber letztlich gleichbedeutend mit einem logischen Verschieben der Datei, die plötzlich in einem anderen Verzeichnis angezeigt wird. - Und genau das war schließlich ja das Ziel unserer Bemühungen!
Damit alles wie gewünscht und mit akzeptablem Tempo abläuft, basteln wir uns eine eigene Version von ERASE. Denn das Umbenennen kann nur dann funktionieren, wenn die Zieldatei noch nicht vorhanden ist. Ist das trotzdem der Fall, muß die Zieldatei gelöscht werden, damit der zugehörige Eintrag in der FAT frei wird. Erst dann darf umbenannt werden.
Natürlich darf das Programm MOVEIT nicht einfach Dateien löschen, wie es ihm beliebt. Eine Bestätigung sollte schon erforderlich sein. Deshalb fragt MOVEIT jedesmal arbig nach, ob auch wirklich gelöscht werden soll. Bei Eingabe von 'N' für NEIN wird die betreffende Datei übersprungen.
Eine kleine Klippe gilt es aber nach wie vor zu umschiffen. Das Umbenennen erwartet fertige Dateinamen. Doch woher nehmen...? Was zu tun ist, ist das Erzeugen von kompletten Pfadnamen, was mittels FExpand recht leicht zu bewerkstelligen ist. Übrig bleibt die Übernahme von etwa vorgegebenen Namenskürzeln. Dies erfolgt in der Funktion AdjustFileNames, die den alten und neuen Namen übergeben bekommt und daraus einen neuen bastelt.