Auf der DOS-Ebene ist der FOR-Befehl die einzige Möglichkeit, Schleifen zu konstruieren, womit sich jedoch beispielsweise keine Schleifen mit durchlaufenden Nummern realisieren lassen. Wir haben für Sie eine Methode parat, mit der Sie auf Batchebene Schleifen erzeugen können, um z.B. die Dateien »DATEI001« bis »DATEI025« zu generieren – ganz nach Geschmack.
Der Filter INCR.DEB filtert dazu aus den empfangenen Zeichen die Abschnitte, die nur aus den Ziffern 0 bis 9 bestehen, heraus und betrachtet diese als Dezimalzahl, die es um den Wert 1 (INCRement) zu erhöhen gilt. Dabei muß die Zahl nicht unbedingt aus zusammenhängenden Ziffern bestehen; eine zu vervielfältigende Datei könnte z. B. »DATEI000.000« heißen. Beträgt der Wert der Extension 999, ergibt das nächste Inkrement »DATEI001.000«. Die Länge der Zahl bleibt aber stets gleich. Sie müssen je nach Bedarf eben genügend führende Nullen reservieren, sonst gibt es einen sogenannten »Wrap«: Aus »DATEI.999« entsteht nämlich »DATEI.000«. Der Folgende Stapeljob zählt vom ersten Parameter bis zum zweiten, indem er bei jedem Durchlauf eine temporäre Batch-Datei erzeugt und sie aufruft. Wegen des verwendeten CALL-Befehls eignet sich diese Konstruktion leider nur für DOS 3.3 oder neuer – mit einigen Tricks ist es aber auch bei älteren Versionen möglich. Darauf wollen wir aber nicht näher eingehen. Rufen Sie SCHLEIFE.BAT beispielsweise mit den Eingaben »SCHLEIFE 1 5«, »SCHLEIFE X111 X222« oder »SCHLEIFE DATEI.000 DATEI.010« auf. Achten Sie dabei darauf, daß sich die beiden Parameter im Aufbau, also auch in Groß- und Kleinschreibung, bis auf den Zahlenwert nicht voneinander unterscheiden!
@ECHO OFF REM Temporäre Dateien wie TMP.BAT REM am besten in eine RAM-Disk... IF "%2"=="" GOTO FEHLER SET VAR=%1 :SCHLEIFE ECHO %VAR% IF %VAR%==%2 GOTO ENDE ECHO SET VAR=%VAR% | INCR >TMP.BAT CALL TMP.BAT GOTO SCHLEIFE :FEHLER ECHO Sie müssen einen Start- und ECHO einen Endwert angeben! :ENDE IF EXIST TMP.BAT DEL TMP.BAT
Name: | INCR.DEB |
Funktion: | Addiert zu einer empfangenen Dezimalzahl den Wert 1. |
Übersetzung | : DEBUG <INCR.DEB |
Prüfsumme: | 5B0D |
Anwendung: | z.B. ECHO 1 | INCR (ergibt 2) |
Einschränkungen: | Da zum laufenden Erhöhen des Zählers ein eigener Stapel- job nötig ist, läuft die Schleife relativ langsam ab. |
A XOR BX,BX ;100 MOV AH,3F ;102 MOV CX,FD00 ;104 CALL 12F ;107 MOV CX,AX ;10A MOV BX,AX ;10C MOV AL,[BX+1FF] ;10E INC AL ;112 CMP AL,31 ;114 JB 123 ;116 CMP AL,3A ;118 JA 123 ;11A MOV By[BX+1FF],30 ;11C JNZ 126 ;121 DEC BX ;123 JNZ 10E ;124 MOV [BX+1FF],AL ;126 MOV AH,40 ;12A MOV BX,1 ;12C MOV DX,200 ;12F INT 21 ;132 RET ;134 RCX 35 NINCR.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: