Dokument ist veraltet

Stapelverarbeitung mit dem LIST Befehl

Wer mehr aus seinem - echten oder emulierten - Amiga rausholen will, kommt um etwas Scripting nicht herum.

WWW: AmigaDOS Online Reference Manual (english)

1. Die Amiga-Shell

Eine Shell ist eine - ursprünglich von UNIX stammende - Textkonsole, in der man Befehle eingeben und ausführen lassen kann. Beim Amiga sieht das z.B. so aus:

Auf dem Bildschirm sieht das dann so aus (kursiv: Bildschrimausgaben):

Neuer Shell-Prozeß 6
6.0> CD
Workbench:
6.0> CD Bilder:
6.0> CD
Bilder:
6.0> LIST
1.jpeg                    167703 ----rwed 21-Jun-99  22:23:53
2.jpeg                    201985 ----rwed 21-Jun-99  22:23:59
3.jpeg                    322171 ----rwed 21-Jun-99  22:24:09
4.jpeg                    195652 ----rwed 21-Jun-99  22:24:15
5.jpeg                    235656 ----rwed 21-Jun-99  22:24:22
6.jpeg                    208807 ----rwed 21-Jun-99  22:24:28
7.jpeg                    296418 ----rwed 21-Jun-99  22:24:37
7 files - 1601 blocks used
6.0> LIST >test
6.0> LIST
test                         523 ----rwed Heute      13:30:54
1.jpeg                    167703 ----rwed 21-Jun-99  22:23:53
2.jpeg                    201985 ----rwed 21-Jun-99  22:23:59
3.jpeg                    322171 ----rwed 21-Jun-99  22:24:09
4.jpeg                    195652 ----rwed 21-Jun-99  22:24:15
5.jpeg                    235656 ----rwed 21-Jun-99  22:24:22
6.jpeg                    208807 ----rwed 21-Jun-99  22:24:28
7.jpeg                    296418 ----rwed 21-Jun-99  22:24:37
8 files - 1603 blocks used
6.0> TYPE test
test                       empty ----rwed Heute      13:30:54
1.jpeg                    167703 ----rwed 21-Jun-99  22:23:53
2.jpeg                    201985 ----rwed 21-Jun-99  22:23:59
3.jpeg                    322171 ----rwed 21-Jun-99  22:24:09
4.jpeg                    195652 ----rwed 21-Jun-99  22:24:15
5.jpeg                    235656 ----rwed 21-Jun-99  22:24:22
6.jpeg                    208807 ----rwed 21-Jun-99  22:24:28
7.jpeg                    296418 ----rwed 21-Jun-99  22:24:37
8 files - 1603 blocks used
6.0> DELETE test
test  Deleted
6.0>

2. Eine Datei umbenennen

Mal angenommen, man wollte die Dateien im Verzeichnis Bilder: (also 1.jpeg bis 7.jpeg) auf eine MS-DOS Diskette kopieren. Da MS-DOS nur 3-stellige Datei-Endungen zulässt, und die Endung .jpe nicht sehr gebräuchlich ist, muss man also wohl oder übel alle Endungen nach .jpg umbenennen. Syntax fürs Umbenennen:

RENAME <alter_Name> <neuer_Name>

In der Shell sieht das dann so aus:

6.0> RENAME 1.jpeg 1.jpg
6.0> RENAME 2.jpeg 2.jpg
6.0> RENAME 3.jpeg 3.jpg
6.0> RENAME 4.jpeg 4.jpg
6.0> RENAME 5.jpeg 5.jpg
6.0> RENAME 6.jpeg 6.jpg
6.0> RENAME 7.jpeg 7.jpg
6.0> LIST
1.jpg                     167703 ----rwed 21-Jun-99  22:23:53
2.jpg                     201985 ----rwed 21-Jun-99  22:23:59
3.jpg                     322171 ----rwed 21-Jun-99  22:24:09
4.jpg                     195652 ----rwed 21-Jun-99  22:24:15
5.jpg                     235656 ----rwed 21-Jun-99  22:24:22
6.jpg                     208807 ----rwed 21-Jun-99  22:24:28
7.jpg                     296418 ----rwed 21-Jun-99  22:24:37
7 files - 1601 blocks used
6.0>

3. Befehlsdateien - Scripts

Anstatt Befehlszeilen direkt in die Shell einzutippen, kann man auch eine Text-Datei, die Befehlszeilen enthält, ausführen lassen. Dies geschieht mit dem EXECUTE Befehl. Man könnte also genausogut die 7 Befehlszeilen zum umbenennen der Bilder in eine Datei tippen, und diese dann ausführen lassen. Allerdings wäre das immernoch genausoviel Tipparbeit.
Deshalb wird's Zeit, mal einen genaueren Blick auf den LIST Befehl zu werfen.

4. Stapelverarbeitung - alle Dateien auf einmal umbenennen

Die Befehlsdatei mit den o.g. 7 Zeilen kann mit dem LIST Befehl automatisch erzeugt werden. Dass die Ausgabe von LIST mit dem Umleitungszeichen > in eine Datei geschrieben werden kann, ist oben bereits zu sehen.
Jetzt muss der LIST Befehl eigentlich nur noch wissen, wie die einzelnen Zeilen aufgebaut sein sollen. Dies lässt sich mit dem Parameter LFORMAT festlegen. Syntax:

LIST LFORMAT "<Format-String>"

, wobei die doppelten Anführungszeichen nur notwendig sind, wenn der Format-String Leerzeichen enthält.
Der LFORMAT Parameter bewirkt, dass Jede Zeile, die der LIST Befehl ausgibt, haargenau dem Format-String entspricht, allerdings mit 2 Besonderheiten:
A. Platzhalter
Wichtige Informationen sind in Platzhaltern abgelegt, die im Format-String verwendet werden können, z.B.:

B. Maskierte Zeichen
Zeichen, die innerhalb der Shell bereits eine besondere Funktion erfüllen, können in Format-Strings nicht direkt genutzt werden. Sollen dennoch solche Zeichen in der LIST Ausgabe erscheinen, müssen sie umschrieben (maskiert) werden. Dies geschieht durch ein vorangestelltes Sternchen, z.B.

Damit lässt sich relativ einfach die Befehlsdatei erzeugen:

6.0> LIST LFORMAT "RENAME %N %M.jpg"
RENAME 1.jpeg 1.jpg
RENAME 2.jpeg 2.jpg
RENAME 3.jpeg 3.jpg
RENAME 4.jpeg 4.jpg
RENAME 5.jpeg 5.jpg
RENAME 6.jpeg 6.jpg
RENAME 7.jpeg 7.jpg
6.0>

und damit die o.g. Aufgabe viel leichter bewätigen:

6.0> LIST LFORMAT "RENAME %N %M.jpg" >T:script
6.0> EXECUTE T:script
6.0>

Mit 2 Befehlszeilen lassen sich also beliebig viele Dateien mit einem (aus der Shell aufrufbarem) Programm bearbeiten - z.B. um ein Bildbearbeitungsprogramm zur Videobearbeitung zu nutzen, usw.


5. Das Verzeichnis T:

Es empfiehlt sich, Befehlsdateien, die nur einmal benötigt werden, in dem Verzeichnis T: anzulegen. Da dieses Verzeichnis in der Ram-Disk liegt, wird die Datei beim nächsten Neustart gelöscht, und im Arbeitsverzeichnis würde das Script eh nur stören.

Quelle: AmigaDOS-Handbuch

weiter: Programmsteuerung easy: Shell & ARexx: >>




17.2.2002