← ST-Computer 11 / 1987

Wie von selbst: Auto-Ramdisk-Copy in Omikron-Basic

Programmierpraxis

Bei einer Speichergröße von einem Megabyte, wie sie der Atari ST bietet, gehört eine Ramdisk bei den meisten ST-Usern zum Desktop wie der Papierkorb. Da nicht jede Ramdisk ein Auto-Copy-Programm zur Verfügung stellt, das automatisch vom User ausgesuchte Files in die Ramdisk kopiert, mußte auch ich diese Files erst markieren und dann in die Ramdisk schieben, um sie so zu kopieren: Eine mühselige, fehlerträchtige und zeitraubende Arbeitsweise angesichts der Leistungsfähigkeit des Atari ST. Dabei muß ein solches Auto-Copy-Programm eigentlich gar nicht viel können: Es soll die File-Namen der zu kopierenden Dateien von Diskette lesen, um diese anschließend von Disk A auf Disk C (oder D etc.) zu kopieren. Um dieses Programm universell einsetzen zu können, soll sowohl der Buchstabe des Quell-als auch der des Ziel-Laufwerkes eingelesen werden.

Zuerst also zu den File-Namen, die in der sequentiellen Datei namens „AUTO_RDC.BAT“ auf Disk gespeichert werden sollen: (Siehe Abb. 1)

Dieses Progrämmchen habe ich der Einfachheit halber an Auto-Ramdisk-Copy angehängt. Sie tragen also statt meiner File-Namen die von Ihnen gewünschten ein, ändern bei Bedarf den Ramdisk-Buchstaben und starten den Batch-Maker mit RUN BATCH_MAKER. Übrigens können Sie diese Datei jederzeit ändern, indem Sie den Batch-Maker mit den neuen File-Namen versehen und dann starten.

Auf eine Erklärung des Listings kann wegen des reichlichen Gebrauchs von dokumentierenden Rems sicher verzichtet werden. Gestartet wird AUTO_RDC.BAS entweder, was am bequemsten ist, mit Doppelklick direkt vom Desktop (nachdem die Ramdisk eingerichtet wurde), oder mit RUN „AUTO_RDC.BAS“ unter Omikron-Basic.

Wenn alle Batch-Files fehlerfrei auf das Ziel-Laufwerk kopiert wurden, löscht sich Auto-Ramdisk-Copy selbst, da ein nochmaliger Start auf jeden Fall einen Fehler verursachen würde.

Sollte Ihre Ramdisk im Icon einen anderen Buchstaben als C aufweisen, so müssen Sie im BATCH_MAKER den Buchstaben eintragen, den Ihre Ramdisk im Icon hat.

Es sei noch erwähnt, daß Auto-Ramdisk-Copy durch die Tatsache, daß sowohl das Quell- als auch das Ziel-Laufwerk aus dem Batch-Job eingelesen werden, auch als gewöhnliches Kopierprogramm benutzt werden kann (z. B. Quell-Laufwerk: A, Ziel-Laufwerk: B und der Batch-Job natürlich auf dem Quell-Laufwerk).

Der Zeitaufwand, den das Abtippen der 78 Zeilen erfordert, lohnt sich sehr schnell, da durch Auto-Ramdisk-Copy das leidige Selektieren und Hin- und Hergeschiebe entfällt.

A1so ab heute schneller, sicherer und bequemer arbeiten mit Auto-Ramdisk-Copy!

PANCREATION

0 '*************************************** 1 ' 2 ' AUTO-RAMDISK-COPY 3 ' 4 '************************************** 5 ' 6 ' Ein ebenso kleines 7 ' wie nützliches Hilfsprogramm 8 ' für alle 9 ' Omikron-Basic-Programmierer 10 ' 11 ' PANCREATION 1987 12 ' 13 ' Rainer Pankratz 14 ' Im Veidenkamp 18 15 ' 3340 Wolfenbüttel 16 ' 17 ' ***************************************** 18 ' 19 CLS ' Bildschirm löschen 20 OK ERROR GOTO Fehler ' Fehler abfangen 21 DIM Batch$(64) ' Platz für Batch-Liste 22 PRINT CHR$(27);"f" ' Cursor ausschalten 23 PRINT : PRINT 24 PRINT TAB (12);"**********************************************" 25 PRINT TAB (12);"* *" 26 PRINT TAB (12);"* A U T O - R A M D I S K - C O P Y *" 27 PRINT TAB (12):"* *" 28 PRINT TAB (12);"* PANCREATION '87 *" 29 PRINT TAB (12);"* *" 30 PRINT TAB (12);"**********************************************" 31 PRINT 32 ' 33 OPEN "I",1,"AUTO_RDC.BAT" ' Batch-Datei öffnen 34 Count=0 ' Zähler auf Kuli setzen 35 INPUT #1,Quell$ ' Quell-Laufwerk lesen 36 INPUT #1,Ziel$ ' Ziel-Laufwerk lesen 37 WHILE NOT EOF(1) ' Solange noch Daten vorliegen ... 38 Count=Count+1 'Zähler erhöhen 39 INPUT #1,Batch$(Count) ' File-Name speichern 40 WEND ' bis keiner mehr vorhanden 41 CLOSE 1 ' Batch-Datei schließen 42 IF Count=0 THEN ERROR 1 ' bei Null Fehler erzeugen 43 REPEAT ' Kopierschleife 44 Loop_Nr=Loop_Nr+1 ' Zähler erhöhen 45 PRINT TAB (23);Batch$(Loop_Nr);" "; ' File-Namen anzeigen 46 PRINT TAB (41);">>>>"; ' Vorgang anzeigen 47 COPY Quell$+":\"+Batch$(Loop_Nr) TO Ziel$+":\" ' Kopieren 48 PRINT TAB (41);" "; ' Anzeige löschen 49 PRINT TAB (48);" [ OK ]": PRINT ' hat geklappt 50 UNTIL Loop_Nr=Count ' bis alle kopiert sind 51 CLS ' Bildschirm löschen 52 PRINT ">>> ";Ziel$;":": PRINT ' Ramdiskinhalt 53 FILES Ziel$+":\*.*" ' anzeigen 54 NEW ' AUTO-RAMDISK-COPY löschen 55 ' Fertig! 56-Fehler ' Fehlerbehandlung 57 MOUSEON ' Maus ein und A1ert zeigen 58 FORM_ALERT (1,"[1][Es ist ein Fehler aufgetreten!|Bitte Diskinhalt prüfen|und nochmal versuchen!][ OK ]",Button) 59 MOUSEOFF ' Maus aus 60 CLS ' Bildschirm löschen 61 PRINT ">>> "+Quell$;":": PRINT ' Quelldisk Inhalt zeigen 62 FILES Quell$+":\*.*" ' weil wahrscheinlich Datei 63 RESUME Ende ' nicht vorhanden 64-Ende 65 END ' Fertig! 66 ' 67 '*** BATCH-HAKER *** ' Batch-Datei erstellen 68-Batch_Maker 69 OPEN "O",1,"AUTO_RDC.BAT" ' Datei öffnen 70 ' 71 PRINT #1,"A" ' Quell-Laufwerk schreiben 72 PRINT #1,"C" ' Ziel-Laufwerk schreiben 73 PRINT #1,"FILE_NR1.XYZ" ' die zu 74 PRINT #1,"FILE_NR2.XYZ" ' kopierenden File-Namen 75 PRINT #1,"FILE_NR3.XYZ" ' schreiben 76 ' Liste ist erweiterungsfähig! 77 CLOSE 1 ' Datei schließen 78 * Fertig!