PofoWiki

Die ultimative Informationsquelle zum ATARI Portfolio

Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:diy:batch:aes

Batchen im AES-Look

AES steht für Application Environment Services, dabei handelt es sich um den Teil des Betriebssystems, der für die Menüsteuerung und Zeilen-Editor-Funktionen von Portfolios internen Applikationen verantwortlich ist.
Dies geht zwar schon allein mit den internen DOS-Befehlen, sieht dann aber nur so aus, mit Hilfe von ein Paar Utilities und Tools allerdings kann man komplexe „Programme“ schreiben. Diese Utilities/Tools sind alle kostenlos erhältlich:

  • CSRPOS.COM –Ermöglicht das freie Positionieren des Cursors.
  • CSRMOD.COM –Ermöglicht das Ein- und Ausschalten des Cursors.
  • SCRSTR.COM –Speichert komplette Textbildschirme als Datei.
  • SCRRST.COM –Liest den mit SCRSTR.COM gespeicherten Bildschirm zurück.
  • BOX.COM –Erstellt einen AES-üblichen Rahmen.
  • MSG.COM –Zeigt eine eingerahmte Meldung.
  • MENU.EXE –Fabriziert eine Auswahlbox.
  • INPUT.COM–Ermöglicht die Eingabe von Zeichen samt Zeilen-Editing.
  • GETFILE.EXE –Ermöglicht das Laden/Ausführen von Dateien in einer Auswahlbox.

Diese Dateien sind im Downloadbereich zu haben. Downloaden, zum Pofo übertragen, und los geht´s.

Erste Versuche

Wir schreiben uns folgende Batchdatei:

BOX
CSRPOS 1,5
ECHO AES-Batchen
CSRPOS 2,3
ECHO Mit dieser Batchdatei und ein paar
CSRPOS 3,3
ECHO Utilities kann ich mir meine eigene
CSRPOS 4,3
ECHO AES-Umgebung zurecht-batchen.
SCRSTR.COM SCR0.PGT

Nennen wir sie MKAES01.BAT. Wenn wir sie ausführen sehen wir dabei zu wie DOS uns einen Startbildschirm bastelt und ihn zum Schluss unter dem Namen SCR0.PGT ablegt.

Nun ein kleines Hauptprogramm:

:START
SCRRST SCR0.PGT
SET FILENAME=UNSET
GETFILE *.*
IF %FILENAME%==UNSET GOTO NIX
CLS
ECHO %FILENAME%
PAUSE >NUL
SET FILENAME==
CLS
SCRRST SCR0.PGT
GOTO START
:NIX

Nennen wir es AES.BAT. Starten wir diese Batchdatei erscheint unser vorher generierter Startbildschirm und ein Fenster mit allen auf dem gegenwärtigen Pfad befindlichen Dateien. Mit den Pfeiltasten oder durch Drücken eines der Anfangsbuchstaben wählen wir sie aus. Dies erledigt GETFILE.EXE. Haben wir eine ausgewählt steht ihr Name in der Ungegungsvariable FILENAME. Nun können wir mit dieser Datei alles mögliche anstellen:
Sie löschen: DEL %FILENAME%
Sie ansehen: TYPE %FILENAME%
Sie kopieren: COPY %FILENAME% C:\*.*
usw.
Im obigen Beispiel wird der Name auf einem blanken Bildschirm dargestellt (ECHO FILENAME). Drücken wir eine Taste kehren wir zum Startbildschirm zurück. Um das Programm zu verlassen drücken sie Esc wärend sie das Dateiauswahlmenü sehen.

Ladebalken

Na ja, dies ist nicht AES-typisch, eher Windows, aber manchmal ganz nett.

scrstr SCREEN0.PGT
csrmod /o
csrpos 4,10
box 3,20
csrpos 4,14
echo loading...
csrpos 5,11
echo █
csrpos 5,12
echo ██
csrpos 5,14
echo ██
csrpos 5,16
echo ██
csrpos 5,18
echo ███
csrpos 5,21
echo █
csrpos 5,22
echo █
csrpos 5,23
echo █
csrpos 5,24
echo ██
csrpos 5,26
echo ██║
pause >nul
scrrst SCREEN0.PGT
csrmod /b

Zwischen ECHO und CSRPOS können jeweils Teile einer Routine eingefügt werden. So kann man anhand des wachsenden Balkens das Fortschreiten der Gesamtroutine beobachten.

Elementarer Filemanager

Eine etwas komlexere Batch-Datei die so etwas ähnliches wie ein Filemanager ist. Das Programm prüft am Anfang ob alle erforderlichen Utilities und Tools zur Verfügung stehen. Es wird eine gewisse Verzeichnis-Struktur vorausgesetzt (A:\COMMANDS\, A:\TOOLS\, A:\UTILITY\…), sollten Sie die Programme MENU, INPUT, GETFILE, BOX… in anderen Verzeichnissen haben passen sie dies vorher an. Es wird zusätzlich zu den oben erwähnten Utilities noch die Utility ALF.COM benötigt.

@echo off
echo checking environment integrity...
if not exist a:\tools\scrrst.com goto noaes
if not exist a:\tools\scrstr.com goto noaes
if not exist a:\utility\aes.pgt goto noaes
if not exist a:\commands\csrpos.com goto noaes
if not exist a:\commands\box.com goto noaes
scrrst a:\utility\aes.pgt
csrpos 7,39
pause >nul
csrmod /o
csrpos 4,10
box 3,20
csrpos 4,14
echo loading...
csrpos 5,11
echoif not exist a:\commands\msg.com goto noaes2
csrpos 5,12
echo ██
if not exist a:\tools\menu.exe goto noaes2
if not exist a:\tools\getfile.exe goto noaes2
csrpos 5,14
echo ██
if not exist a:\commands\alf.com goto noaes2
csrpos 5,16
echo ██
csrpos 5,18
echo ███
csrpos 5,21
echo █
csrpos 5,22
echo █
csrpos 5,23
echo █
csrpos 5,24
echo ██
csrpos 5,26
echo ██║
csrpos 7,1
scrrst a:\utility\aes.pgt
csrpos 4,4
box 3,33
csrpos 5,6
echo welcome to batch-environment!
csrmod /b
csrpos 5,35
chkdsk >nul
csrmod /o
scrrst a:\utility\aes.pgt
goto main
 
:noaes2
scrstr c:\aeserr.pgt
csrpos 3,5
box 3,34
csrpos 4,7
echo sorry, environment incomplete.
chkdsk >nul
scrrst a:\utility\aes_req.pgt
pause >nul
scrrst c:\aeserr.pgt
del c:\aeserr.pgt
goto quit
 
:main
csrpos 2,17
csrmod /b
menu main apps commands tools dos quit
if errorlevel 5 goto quit
if errorlevel 4 goto dos
if errorlevel 3 goto tools
if errorlevel 2 goto commands
if errorlevel 1 goto apps
goto quit
 
:apps
a:
scrstr c:\aes01.pgt
:appmenu
menu apps adr dry wks txt cal
if errorlevel 5 goto cal
if errorlevel 4 goto txt
if errorlevel 3 goto wks
if errorlevel 2 goto dry
if errorlevel 1 goto adr
scrrst c:\aes01.pgt
del c:\aes01.pgt
goto main
 
:adr
scrstr c:\aes02.pgt
set spec=a:\apps\*.adr
set appl=/a
goto getapp
 
:dry
scrstr c:\aes02.pgt
set spec=a:\apps\*.dry
set appl=/d
goto getapp
 
:wks
scrstr c:\aes02.pgt
set spec=a:\apps\*.wks
set appl=/w
goto getapp
 
:txt
scrstr c:\aes02.pgt
set spec=a:\apps\*.txt
set appl=/e
goto getapp
 
:cal
scrstr c:\aes02.pgt
app /c
scrrst c:\aes02.pgt
del c:\aes02.pgt
goto appmenu
 
:quit
csrmod /o
scrrst a:\utility\aes.pgt
csrpos 4,10
box 3,18
csrpos 5,12
echo leaving AES...
csrpos 5,26
csrmod /b
goto end
 
:getapp
if not exist %spec% goto nofil
if not exist c:\system\permdata.dat goto nopd
set filename=unset
getfile %spec%
if %filename%==unset goto appret
set cmd=alf a:\apps\%filename% %appl%
%cmd%
app %appl%
set spec=
set filename=
set appl=
set cmd=
scrrst c:\aes02.pgt
del c:\aes02.pgt >nul
goto appmenu
 
:appret
scrrst c:\aes02.pgt
del c:\aes02.pgt >nul
set spec=
set filename=
set appl=
set cmd=
goto appmenu
 
:nofil
msg no matching file found.
goto appret
 
:nopd
copy a:\utility\permdata.dat c:\system\*.* >nul
goto getapp
 
:commands
scrstr c:\aes01.pgt
:commenu
set filename=unset
set spec=a:\commands\*.*
if not exist %spec% goto nocom
getfile %spec%
if %filename%==unset goto comret
scrstr c:\aes02.pgt
cls
%filename%
pause
scrrst c:\aes02.pgt
del c:\aes02.pgt
set filename=
set spec=
goto commenu
 
:comret
scrrst c:\aes01.pgt
del c:\aes01.pgt
goto main
 
:nocom
msg no matching file found.
set filename=
set spec=
scrrst c:\aes01.pgt
del c:\aes01.pgt
goto main
 
:tools
scrstr c:\aes01.pgt
:toolmenu
set filename=unset
set spec=a:\tools\*.*
if not exist %spec% goto noexe
getfile %spec%
if %filename%==unset goto exeret
scrstr c:\aes02.pgt
if not %filename%==TCCALC.COM cls
%filename%
csrpos 8,3
pause
scrrst c:\aes02.pgt
del c:\aes02.pgt
set filename=
set spec=
goto toolmenu
 
:exeret
scrrst c:\aes01.pgt
del c:\aes01.pgt
goto main
 
:noexe
msg no matching file found.
set filename=
set spec=
scrrst c:\aes01.pgt
del c:\aes01.pgt
goto main
 
:dos
scrstr c:\aes01.pgt
:dosmenu
menu DOS dir chkdsk time label
if errorlevel 4 goto doslab
if errorlevel 3 goto dostim
if errorlevel 2 goto doschkdsk
if errorlevel 1 goto dosdir
scrrst c:\aes01.pgt
del c:\aes01.pgt
goto main
 
:dosdir
scrstr c:\aes02.pgt
cls
dir /p
pause
scrrst c:\aes02.pgt
del c:\aes02.pgt
goto dosmenu
 
:doschkdsk
scrstr c:\aes02.pgt
cls
chkdsk /p
csrpos 8,1
pause
scrrst c:\aes02.pgt
del c:\aes02.pgt
goto dosmenu
 
:dostim
scrstr c:\aes02.pgt
cls
csrpos 3,1
time
date
pause
scrrst c:\aes02.pgt
del c:\aes02.pgt
goto dosmenu
 
:doslab
scrstr c:\aes02.pgt
cls
csrpos 3,1
label
pause
scrrst c:\aes02.pgt
del c:\aes02.pgt
goto dosmenu
 
 
:noaes
echo sorry, environment incomplete.
goto exit
 
:end
set filename=
set spec=
 
del c:\aes??.pgt >nul
scrrst a:\utility\aes.pgt
csrmod /b
:exit

Download: AES.BAT

volker hamann

software/diy/batch/aes.txt · Zuletzt geändert: 17/12/2011 00:12 (Externe Bearbeitung)