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:
- CD <Pfad> - wechselt ins angegeben Verzeichnis
- CD - CD ohne Parameter gibt das aktuelle Arbeitsverzeichnis aus
- LIST - LIST ohne Parameter listet alle Eintäge im aktuellen Verzeichnis auf
- Mit dem Umleitungszeichen > lässt sich die Bildschirm-Ausgabe eines Programms in eine angegebene Datei umleiten
- TYPE <Dateiname> gibt die angegebene Datei auf dem Bildschirm aus
- Mit dem DELETE Befehl werden Dateien gelöscht.
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.:
- %N - Name des Verzeichniseintrags (natürlich korrespondierend zur jeweiligen Zeile der LIST Ausgabe)
- %M - Name ohne Endung (also alles, was vor dem Punkt steht)
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.
- *" - Doppelte Anführungszeichen
- ** - Sternchen
- *N - neue Zeile
- *% - Prozent-Zeichen
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