AVALON BatchCLI
Letzte Änderung: 18.08.1994
==========================================================================
= D e r B A T C H - I N T E R P R E T E R =
==========================================================================
Bei den gekennzeichneten (!) Befehlen können Wildcards ("*" und "?")
benutzt werden.
Die mit einem (*) gekennzeichneten Befehle liefern einen Rückgabewert
(Errorlevel), oder werten diesen aus.
Wichtige Hinweise:
------------------
Der Interpreter wurde speziell für den Pointbetrieb geschrieben und weist
deshalb einige Besonderheiten auf:
1.) Die Batchdatei wird NICHT abgebrochen, wenn ein Fehler auftritt
(z.B. wenn eine nicht vorhandene Datei versucht wird zu kopieren).
Es wird zwar eine Fehlermeldung auf dem Bildschirm ausgegeben, diese
kann aber i.d.R. ignoriert werden. Kritische Fehler (falsche Pfad-
angaben u.ä.) und Meldungen (PAUSE), werden invers hervorgehoben.
2.) Bei Beginn der Abarbeitung einer Batchdatei, ist das Laufwerk und
der Pfad auf das Laufwerk bzw. den Pfad gesetzt, in dem die
Batchdatei zu finden ist.
3.) Gro×-/Kleinschreibung wird bei den Befehlen nicht beachtet.
4.) Ein BREAK (Unterbrechung) der Batchdatei ist über "ESC" möglich.
5.) Ist die Ausgabe auf ECHO=FULL geschaltet, so kann man die Ausgabe
einzelner Zeilen unterdrücken, indem man dem Kommando ein "@" vor-
anstellt.
AUTOEXEC.BAT:
-------------
Noch bevor die AutoPoll-Sessions beim Start von AVALON abgearbeitet
werden, gibt es die Möglichkeit eine Batchdatei mit Namen AUTOEXEC.BAT
automatisch ausführten zu lassen. Hierzu mu× diese Datei im Avalon-
Systemordner vorhanden sein.
Wenn diese Datei nicht ausgeführt werden soll, so ist während des Starts
von AVALON die LINKE SHIFT-Taste gedrückt zu halten, oder man übergibt
Avalon den Parameter "NoAutoBatch".
Eine beliebige andere Batchdatei kann ebenfalls über die Kommandozeile
definiert werden: "Batch:PFAD\BATCH.BAT" (z.B. "Batch:E:\TEST\POLL.BAT).
Der Batchinterpreter Seite 02
Bearbeitung von Dateien .................................. 3
COPY, MOVE, SCOPY, SMOVE
RENAME
DEL
TYPE, PRINT
DUMMYFILE
SPLIT
Starten von Programmen ................................... 4
EXEC, DEXEC
REDIRECT=ON|OFF
Verzeichnis- und Laufwerksbefehle ........................ 4
DIR
CHDIR
X:
Überprüfungs- und Sprungbefehle .......................... 5
EXIST, EXISTn, NOTEXIST, NOTEXISTn
JUMP
IFERR=, IFERR<, IFERR>, IFERR#
:label, GOTO
Funktionen, die direkt ERRORLEVEL beeinflussen ........... 6
CLRERR
DAY?, MONTH?, YEAR?, WEEKDAY?, DATE?
HOUR?, MINUTE?, TIME?
GETKEY
Erzeugen von Textdateien ................................. 6
OPEN, APPEND
WRITE
CLOSE
Textdateien in eine Area setzen .......................... 7
!FILE
!FILESELECT
!AREA
!BASE
!FLAGS
!SUBJECT
!CONVERT=ON|OFF
!CONVERTTEARLINE=ON|OFF
!FROM
!SEND
Befehle, die direkt die Parameter beeinflussen ........... 8
FILESELECT
CUTEXTENSION, CUTPATH
INPUT, PRESET
CONVERT, CONVERT4D
Node-/Pointlist Bearbeitung .............................. 9
APPLYDIFF
MAKEUSERLIST
EXTRACT
Sonstige Befehle ......................................... 10
PAUSE
CLS
REM, ";"
ECHO, WECHO, ECHO=OFF|ON
EXIT
EndOfAvalon, ErrorEndOfAvalon
SHELL
HIDEM, SHOWM
SWITCH
SHIP
BELL, GONG
WAITTIME
LOG, LOGn
Beispiele ................................................ 12
Der Batchinterpreter Seite 03
Bearbeitung von Dateien:
========================
!-) COPY <quelle> <zielpfad>
!-) MOVE <quelle> <zielpfad>
COPY kopiert einzelne oder mehrere Dateien, MOVE verschiebt
sie. Die Befehle erlauben es nicht, eine Datei umzubenennen.
Wird eine Datei als Zieldatei angegeben, so wird diese
ignoriert. Der Zielpfad mu× mit einen "\" enden. Alle
gefundenen Quelldateien werden nach <zielpfad> kopiert bzw.
verschoben.
!-) SCOPY <quelle> <ziel>
!-) SMOVE <quelle> <ziel>
SCOPY kopiert einzelne Dateien, MOVE verschiebt sie. Die Befehle
kopieren bzw. verschieben immer nur EINE Datei. Zwar ist es
erlaubt, Wildcards im Filenamen der Quelle anzugeben, es wird
aber nur die zuerst gefundene nach <ziel> kopiert, wobei die
Datei evtl. gleichzeitig umbenannt wird. Als <ziel> mu× immer
eine Datei angegeben werden; ein einfacher Pfad wie bei
COPY/MOVE reicht hier nicht aus!
(S)COPY/MOVE kopieren auch Dateien, die die Länge NULL haben. Wird
versucht eine Datei mit der Länge NULL zu kopieren, so wird eine
Warnung auf dem Bildschirm ausgegeben, der Kopiervorgang aber aus-
geführt.
--) RENAME <altdatei> <neudatei>
Ändert den Dateinamen EINER Datei bzw. verschiebt eine oder
mehrere Dateien.
Dateien können nur dann verschoben werden, wenn der Zielordner
sich auf demselben Laufwerk befindet, z.B.
RENAME D:\JETMAIL\INBOUND\*.* D:\DOWNLOAD\
Wichtig ist der letzte Backslash im Zielpfad!
Gegenüber MOVE hat RENAME den Vorteil, da× nur der Dateiname
umgetragen wird und nicht die gesamte Datei kopiert werden mu×.
Der Geschwindigkeitsvorteil ist hierbei enorm, da eine beliebige
Datei, egal welcher Grö×e, innerhalb von Sekundenbruchteilen
verschoben wird.
!-) DEL <datei>
Löscht eine oder mehrere Dateien.
!-) TYPE <datei>
Zeigt eine oder mehere Dateien seitenweise auf dem Bildschirm
an.
!-) PRINT <datei>
Druckt eine oder mehrere Dateien auf dem Drucker aus, wenn
dieser Online ist.
--) DUMMYFILE <datei>
Legt eine Dummy-Datei mit der Länge von NULL-Bytes an.
Der Batchinterpreter Seite 04
!*) SPLIT <file> <bytes> <lines>
Teilt eine Datei in Einzeldateien auf.
<file> - Die gewünschte Datei
<bytes> - max.Länge in Bytes (oder 0)
<lines> - max.Länge in Zeilen (oder 0)
Errorlevels:
0-OK
2-Fehlender Parameter
9-Fehler beim Öffnen eines Files
Starten von Programmen:
=======================
-*) EXEC <prog> [<cmd>]
Startet ein Programm <prog> mit dem Kommando <cmd>.
Soll ein Programm mit EXEC gestartet werden, welches bereits in
"Find-1/2" installiert wurde, so kann anstelle des Files und
der Kommandozeile auch eines der folgenden Kürzel verwendet
werden:
EXPORT, IMPORT, CRUNCH, SCAN, MSGEDIT, TXTEDIT, MAILER,
TERMINAL, UTIL1, UTIL2, UTIL3, UTIL4, UTIL5, UTIL6
Das funktioniert aber nur dann, wenn unter diesen Kürzeln KEIN
Batchfile installiert ist!
!*) DEXEC <file> <prog> [<cmd>]
Wie EXEC, löscht aber anschlie×end <file>, wenn der Rückgabe-
code von <prog> gleich NULL ist. (Wildcards für <file> sind
erlaubt).
--) REDIRECT=ON
Avalon versucht alle BIOS-Ausgaben, also alle Ausgaben, die ein
mit "EXEC" oder "DEXEC" gestartetes TOS-Programm tätigt, in
sein Window umzulenken.
--) REDIRECT=OFF
Die Ausgaben erfolgen wieder auf dem TOS-Bildschirm.
Verzeichnis- und Laufwerksbefehle:
==================================
!-) DIR [[<pfad\>]<datei>]
Ausgabe des Inhaltsverzeichnisses.
--) CHDIR [<x:>]<pfad>
Wechselt das Verzeichnis und ggf. das Laufwerk.
--) X:
Wechselt das aktuelle Laufwerk.
Der Batchinterpreter Seite 05
Überprüfungs- und Sprungbefehle:
================================
!-) EXIST <datei>
Überpüft, ob <datei> vorhanden. Wenn ja, weiter beim nächsten,
ansonsten übernächsten Befehl.
!-) EXISTn <datei>
Wie EXIST, überspringt aber n Zeilen, wenn <datei> nicht vor-
handen ist. Wird '0' angegeben, so werden 10 Zeilen über-
sprungen (EXIST1 entspricht somit EXIST).
!-) NOTEXIST <datei>
Das Gegenstück zu EXIST.
!-) NOTEXISTn <datei>
Das Gegenstück zu EXISTn.
--) JUMP <n>
Überspringt die nächsten <n> Zeilen.
-*) IFERR= <level> <label>
-*) IFERR< <level> <label>
-*) IFERR> <level> <label>
-*) IFERR# <level> <label>
Wenn der Rückgabewert gleich, kleiner, grö×er bzw. ungleich
<level> ist, so wird zur Sprungmarke <label> gesprungen.
--) :label
Definiert eine Sprungmarke unter den Namen <label>. Sprung-
marken dürfen maximal 20 Zeichen lang sein.
--) GOTO <label>
Setzt die Ausführung der Batchdatei bei Marke <label> fort.
Der Batchinterpreter Seite 06
Funktionen, die direkt ERRORLEVEL beeinflussen:
===============================================
-*) CLRERR
Löscht ERRORLEVEL (setzt ERRORLEVEL=0).
-*) DAY?, MONTH?, YEAR?
Ermittelt die Tageszahl (1..31), den Monat (1..12) oder das
Jahr (19xx). Rückgabe in ERRORLEVEL.
-*) WEEKDAY?
Ermittelt den Wochentag. ERRORLEVEL wird auf einen Wert
zwischen 0 und 6 gesetzt (0=Montag,1=Dienstag,...).
-*) DATE?
Rückgabe des Datums in ERRORLEVEL (JJJJMMTT).
-*) HOUR?, MINUTE?
Rückgabe der Stunde (0..23) und Minute (0..59) in ERRORLEVEL.
-*) TIME?
Ermittelt heutiges Datum. Rückgabe in ERRORLEVEL (HHMM).
-*) GETKEY
Wartet auf einen Tastendruck und liefert den ASCII-Code in
ERRORLEVEL zurück.
Erzeugen von Textdateien:
=========================
-*) OPEN <datei>
Öffnet eine Datei. Eine Vorhandene Datei wird hierbei gelöscht.
(ERRORLEVEL=0 bedeutet KEIN Fehler).
Es kann immer nur EINE Datei mit OPEN/APPEND geöffnet werden.
-*) APPEND <datei>
Öffnet eine Datei. Die Daten werden im Gegensatz zu OPEN an eine
bestehende Datei angehängt (ERRORLEVEL=0 bedeutet KEIN Fehler).
Es kann immer nur EINE Datei mit OPEN/APPEND geöffnet werden.
-*) WRITE [<text>]
Schreibt einen Text in die zuvor geöffnete Datei.
-*) CLOSE
Schlie×t die geöffnete Datei.
Der Batchinterpreter Seite 07
Textdateien in eine Area setzen:
================================
!-) !FILE <filename>
Definiere zu sendendes File.
!*) !FILESELECT
Wie "!FILE", aber Auswahl per Fileselector.
(ERRORLEVEL: 0=OK, 1=File nicht gefunden, 2=Abbruch)
--) !AREA <areaname>
Definiere eine (Echo-)area. Diese mu× in der AREAS.BBS vor-
handen sein.
--) !BASE <msgbase>
Definiere eine MsgBase. Anstelle des Areatag (siehe "!AREA")
kann hier direkt die MsgBase angegeben werden (OHNE Extension).
--) !FLAGS <flags>
Mailflags festlegen ("Local" wird immer gesetzt).
Flags: [P] Private, [C] Crash, [S] Sent, [H] Hold
[W] Send-With-File, [K] Kill-If-Sent
"P" MU× in der Netmail gesetzt werden.
Beispiel: Netmail: !FLAGS PK
Echoarea: !FLAGS
--) !SUBJECT <subject>
Das Subject der Mail.
Im Befehl "!SUBJECT" sind folgende Parameter erlaubt:
%filename% - Filename ohne Extension (der konvertierten Datei)
%file% - " mit " " " "
%ext% - Extension als Zahl (oder 0, wenn die Extension
nicht als Zahl auswertbar ist).
--) !CONVERT=ON|OFF
Hiermit kann die Umlautkonvertierung ein- bzw. ausgeschaltet
werden. Standardmä×ig ist sie ausgeschaltet.
--) !CONVERTTEARLINE=ON|OFF
Wenn eine Zeile mit drei "-"-Zeichen anfängt, denken einige
Exporter, da× der Text zu Ende ist (Tearline). Mit diesem
Befehl wird das dritte "-" von Avalon automatisch in ein "!"
konvertiert.
--) !FROM <addr> <name>
Die Adresse und der Name des Absenders.
--) !SEND <addr> <name>
Hiermit wird die Mail an <name> mit der Adresse <addr> erzeugt.
Der Batchinterpreter Seite 08
Befehle, die direkt die Parameter beeinflussen:
===============================================
Die Parameter werden mit %%n angesprochen (0<=n<=9) und können in
JEDEM Befehl verwendet werden. %%e liefert die letzte ERRORLEVEL als
Dezimalzahl.
!*) FILESELECT [n]
Belegt einen Parameter mit einem Filenamen. Fehlt die Angabe
von "n", wird 0 genommen (0<=n<=9).
(ERROLEVEL: 0=OK, 1=File nicht vorhanden, 2=Abbruch)
--) CUTEXTENSION [n]
Schneidet die Extension im Parameter n ab.
--) CUTPATH [n]
Schneidet den Pfad im Parameter n ab.
--) INPUT [n [text]]
Eingabe eines Textes von der Tastatur. Der Text wird im
Parameter n abgelegt. Als Eingabeaufforderung wird <text> aus-
gegeben. (0<=n<=9; fehlt n, so wird Parameter 0 genommen).
--) PRESET [n [text]]
Belegt Parameter n mit <text> vor. (n<=n<=9; fehlt n, so wird
Parameter 0 genommen)
--) CONVERT4D [n [addr]]
--) CONVERT [n [addr]]
Konvertiert eine Adresse in einen 3D- oder 4D-Filenamen und legt
diesen in Parameter n ab.
Der Batchinterpreter Seite 09
Node-/Pointlist Bearbeitung:
============================
!*) APPLYDIFF <nl> <diff> [clean]
Hängt ein Diff-File an eine Node- oder Pointliste an.
<nl> = Nodelist (z.B. "D:\NODELIST.*")
<diff> = Diff-File (z.B. "D:\NODEDIFF.*")
Wird "clean" mit angegeben, so wird das Diff-File anschlie×end
gelöscht.
Errorlevels:
0-Alles OK
1-Falsche CRC (neue NL wurde erzeugt)
2-Fehlender Parameter
3-Nodelist nicht gefunden
6-Fehler beim Anlegen des TMP-Files
7-Tagesnummer nicht gefunden
9-Fehler beim Öffnen eines Files
!*) MAKEUSERLIST <typ> <lst> <out> [<zone>]
Erzeugt eine Userliste für den LED aus einer 3D-/4D-Pointlist
oder Nodelist.
<typ> = Listentyp (p=Pointliste (3D oder 4D), n=Nodeliste)
<lst> = 3D-/4D-Pointlist, Nodelist (z.B. "D:\POINTS24.*")
<out> = Name der Userliste (z.B. "D:\PN24USER.LST")
<zone> = Optional (nur Pointliste):
Ergänze "<zone>:" in der Userliste.
Errorlevels:
0-OK
2-Fehlender Parameter
9-Fehler beim Öffnen eines Files
!*) EXTRACT <nodelist> <output> [<region1> [<region2> ...]]
Hiermit kann eine Nodelist verkleinert werden. Es können bis
zu 50 Regionen angegeben werden, aus denen die verkleinerte
Nodeliste bestehen soll. Fehlt die Angabe einer Region, so wird
eine Liste mit allen RCs erzeugt.
Errorlevels:
0-OK
2-Fehlender Parameter
9-Fehler beim Öffnen eines Files
Der Batchinterpreter Seite 10
Sonstige Befehle:
=================
--) PAUSE
Wartet auf einen Tastendruck.
--) CLS
Bildschirm löschen.
--) REM <text>
--) ; <text>
Bemerkungszeile (wird ignoriert).
--) ECHO [<text>]
Ausgabe einer Textzeile auf dem Bildschirm.
--) WECHO [<text>]
Ausgabe einer Textzeile auf dem Bildschirm ohne Zeilenvorschub.
--) ECHO=OFF|ON|FULL
ECHO=OFF: Es werden nur noch Fehlermeldungen ausgegeben.
ECHO=ON : Ausgabe weiterer Informationen. Nur bei: !SEND,SWITCH,
WEEKDAY?,OPEN,APPEND,DEXEC,(S)COPY/MOVE,DEL,TYPE,PRINT,
RENAME,WAITTIME
ECHO=FULL:wie ECHO=ON und es wird jede Batchzeile ausgegeben.
Default ist ECHO=ON.
--) EXIT [<n>]
Beendet die Batchdatei mit Fehlercode <n>. Wird kein <n>
definiert, so wird 0 zurückgeliefert.
--) EndOfAvalon
Beendet AVALON mit dem Errorcode 0.
--) ErrorEndOfAvalon <n>
Beendet AVALON mit dem Errorcode n.
--) SHELL [<cmd>]
Startet eine Shell über "_shell_p" mit dem Kommando <cmd>.
--) HIDEM
--) SHOWM
Maus verstecken (nützlich, wenn TOS-Programme aufgerufen
werden) bzw. Maus wieder anschalten.
--) SWITCH <n>
Wechselt zu Point-Setup <n> (0<=n<=5). Nur für Binkley-Setup.
Der Batchinterpreter Seite 11
--) SHIP
Harddisk parken. Es werden alle Geräte am ASCI,SCSI und IDE-
Port geparkt.
--) BELL
--) GONG
Ausgabe von Signaltönen.
-*) WAITTIME <HH:MM:SS>
Wartet bis <HH:MM:SS>. Abbruch über eine beliebige Taste.
Rückgabewert: 0=Zeit erreicht, ansonsten Tastencode.
--) LOG <text>
Schreibt <text> in Binkley's Logfile.
--) LOGn <text>
Wie LOG, aber anstelle des "!" am Zeilenanfang kann ein anderes
Zeichen benutzt werden (0=! 1=* 2=+ 3=: 4=#, 5=Leerzeichen).
Der Batchinterpreter Seite 12
Beispiele:
==========
MOVE H:\FIDO\INBOUND\NODE_BRD.* H:\FIDO\LIST\
Verschiebt alle "NODE_BRD.*", falls vorhanden, ins LIST-Verzeichnis.
TYPE H:\FIDO\INBOUND\*.RSP
DEL H:\FIDO\INBOUND\*.RSP
Zeigt alle Respondfiles an und löscht diese anschlie×end.
CHDIR \FIDO\INBOUND
EXIST LISTE.TXT
DEL LISTE.TXT
Löscht LISTE.TXT, falls vorhanden (kann auch ohne EXIST erfolgen,
nur wird dann eine Meldung ausgegeben).
EXIST2 readme.txt | NOTEXIST2 readme.txt
ECHO readme.txt existiert! | ECHO readme.txt fehlt!
JUMP 1 | JUMP 1
ECHO readme.txt fehlt! | ECHO readme.txt existiert!
Beide Beispiele überpüfen, ob "readme.txt" vorhanden ist.
DEXEC nodediff.* arc.ttp x nodediff.*
Ermittelt Namen von NODEDIFF.* (NODEDIFF.A67). Anschlie×end wird
NODEDIFF.* mit ARC.TTP ausgepackt und NODEDIFF.A67 gelöscht. Die
ausgepackte Datei NODEDIFF.267 kann dann z.B. verschoben werden mit:
MOVE NODELIST.* E:\FIDO\LIST\
DUMMYFILE \FIDO\OUTBOUND\00F50008.FLO
Es wird eine Datei mit Namen "00F50008.FLO" angelegt, die die Länge
NULL besitzt.
EXIST files.lzh
DEXEC files.lzh \fido\lharc.ttp x -m files.lzh e:\fido\list\ *.*
Auspacken einer Fileliste FILES.LZH in den Ordner E:\FIDO\LIST\
ECHO Abbruch mit irgendeiner Taste
WAITTIME 12:30
IFERR= 0 weiter
EXIT
:weiter
Wartet bis 12:30 bis mit der Batchdatei weitergemacht wird. Abbruch
mit jeder beliebigen Taste.
Der Batchinterpreter Seite 12
WEEKDAY?
IFERR# 6 weiter
APPEND 09610067.REQ
WRITE NEWFILES
CLOSE
:weiter
oder
WEEKDAY?
IFERR# 6 weiter
CONVERT 0 2401/103
APPEND %%0.REQ
WRITE NEWFILES
CLOSE
:weiter
Beide Beispiele erzeugen jeden Sonntag ein File zum Requesten der
Fileliste "NEWFILES" von 2401/103.