Eines der unter Insidern beliebtesten Utilities ist das Unix-Kommando MV (MoVe) zum Verschieben von Dateien aus einem Directory in ein anderes. Wir haben eine Version für DOS parat, MV.DEB, das die gleiche Umverlegung ohne physikalisches Verschieben des Dateiinhalts vornimmt. MV funktioniert nur innerhalb eines logischen DOS-Laufwerks. Die Verwendung von Wildcards ist erlaubt. Falls ein Verschieben nicht möglich ist, weil z. B. die Zieldatei bereits existiert, gibt es eine kurze Fehlermeldung aus. MV wertet zunächst die übergebenen Parameter aus. Mit Hilfe der DOS-Funktionen »Find First File« (4Eh) und »Find Next File« (4Fh) ermittelt das Programm alle Dateien, die der Quellspezifikation entsprechen.
Per DOS-Funktion »Change Directory Entry« (56h) verlegt MV anschließend jeden einzelnen Directory-Eintrag an die gewünschte Zielposition. Dabei zeigt es den Verlauf der Operation auf dem Bildschirm an.
Name: | MV.DEB |
Funktion: | Verschiebt beliebige Dateien in ein anderes Verzeichnis. |
Übersetzung: | DEBUG <MV.DEB |
Prüfsumme: | DE88 |
Anwendung: | MV [Lw:][Quellverz\]Quelldateien [Lw:]Zielverz |
Einschränkungen: | Funktioniert nur innerhalb eines logischen DOS-Laufwerks. |
A CLD ;100 MOV SI,82 ;101 MOV DI,1CC ;104 CMP By[80],4 ;107 JB 17C ;10C MOV BX,DI ;10E CALL 1A2 ;110 JZ 17C ;113 CALL 197 ;115 JZ 10E ;118 CMP By[DI-1],20 ;11A JNZ 110 ;11E MOV By[SI-1],0 ;120 MOV DI,2CC ;124 CALL 1A2 ;127 JNZ 127 ;12A CALL 197 ;12C JZ 134 ;12F MOV AL,5C ;131 STOSB ;133 MOV BP,DI ;134 MOV DX,82 ;136 MOV CX,27 ;139 MOV AH,4E ;13C INT 21 ;13E JB 17C ;140 MOV DI,BX ;142 MOV AX,1CC ;144 CALL 17D ;147 MOV SI,1B2 ;14A CALL 177 ;14D MOV DI,BP ;150 MOV AX,2CC ;152 CALL 17D ;155 MOV DX,1CC ;158 MOV DI,2CC ;15B MOV AH,56 ;15E INT 21 ;160 MOV SI,1BF ;162 JB 16A ;165 MOV SI,1C9 ;167 CALL 177 ;16A MOV AH,4F ;16D JMP 13E ;16F MOV DL,AL ;171 MOV AH,2 ;173 INT 21 ;175 LODSB ;177 CMP AL,0 ;178 JNZ 171 ;17A RET ;17C MOV SI,9E ;17D MOV CX,E ;180 REPZ MOVSB ;183 MOV SI,AX ;185 CALL 177 ;187 MOV CX,DI ;18A SUB CX,SI ;18C MOV SI,1BD ;18E CALL 177 ;191 LOOP 18E ;194 RET ;196 CMP By[DI-1],5C ;197 JZ 1A1 ;19B CMP By[DI-1],3A ;19D RET ;1A1 LODSB ;1A2 CMP AL,61 ;1A3 JB 1AD ;1A5 CMP AL,7A ;1A7 JA 1AD ;1A9 SUB AL,20 ;1AB STOSB ;1AD CMP By[SI],D ;1AE RET ;1B1 DB "is moved to ",0 DB "-> error!",7,D,A,0 RCX CC NMV.COM W Q
Quelle: 200 Utilities für PC-/MS-DOS von Gerhard Schild und Thomas Jannot
Dies ist eine von Unterstützern finanzierte Veröffentlichung. Um neue Beiträge zu erhalten und meine Arbeit zu fördern, werden Sie Abonnent: