PofoWiki

Die ultimative Informationsquelle zum ATARI Portfolio

Benutzer-Werkzeuge

Webseiten-Werkzeuge


hilfe:tipps:sonstiges:tipps:sonstiges:larsaschenbach:batchkleiner

KnowHow: Batchprogrammierung

Befehle in Variablen

Beim PoFo muß um jedes Byte Speicher gefeilscht werden, da das Originalteil max. 80KB intern für Userdaten bereitstellt. Externe Datenträger bis zu 4MB sind zwar erhältich, aber unverhältnismäßig teuer. Abhilfe schaffen hier die Packer und Komprimierungsprogramme, die aber nichts mit Batchdateien anfangen können.
Nach dem Motto „Selbst ist der Programmierer“, packen wir die Befehle in Variablen, deren Namen kürzer sind, als die der Befehle. Eventuell wird zwar dadurch die Ausführungszeit etwas länger, weil jede Variable wieder in einen Befehl umgewandelt wird, aber man spart doch einige Bytes.

Hier also die Liste der Befehle und der Ersatzvariablen, die ich dafür vorschlage:

BEFEHL:VARIABLE:
BREAK ONBN
BREAK OFFBF
CHKDSKCD
COPYC
DATEW
)DOD
ECHOE
FOR %A IN (FA
FORMATF
GOTOG
IF ERRORLEVELIR
IF EXISTIE
IF NOT EXISTINE
IF NOT %INP
IF %IP
LABELL
PATHA
PAUSEP
PROMPTR
SETS
SHIFTH
TIMEZ
TYPET

Folgende Befehle bringen keine Zinsen ein, wenn man diese in Variablen unterbringt:

CLS, CD, DEL, DIR, MD, RD, REM, REN, VER und VOL.

Eine Batchdatei könnte dann z.B. so aussehen:

@%E%OFF
%IP%1.==. %G%ERR
%FA%*.*%D%%S%TEST=%%A
%IP%1==%TEST% %E%%1 ist die letzte Datei in diesem Verzeichnis
%INP%1==%TEST% %E%%1 ist nicht die letzte Datei in diesem Verzeichnis
%G%off
:err
%E%Erster Parameter fehlte!
:off

Weil das ganze ziemlich abstrakt ist, hier noch einmal in „Klarschrift“:

@echo off
if %1.==. goto err
for %%A in (*.*) do set TEST=%%A
if %1==%TEST% echo %1 ist die letzte Datei in diesem Verzeichnis
if not %1==%TEST% echo %1 ist nicht die letzte Datei in diesem Verzeichnis
goto off
:err
echo Erster Parameter fehlte!
:off

Wer sich diese Schreibweise angewöhnen möchte, ich bleibe aus publizistischen Gründen bei der Klarschrift, muß natßrlich darauf achten, das er die obigen Variablen nicht für andere Zwecke definiert. Ebenso müssen evtl. die bisherigen Batchdateien ensprechend geändert werden. Auch wenn sich nur wenige die Arbeit machen sollten, werde ich in Zukunft diese Variablen vermeiden, damit es keine Konflikte gibt !

Übrigens: Die Definition der Variablen, mit Befehlen, sollte in der „AUTOEXEC.BAT“ erfolgen, damit man keinen Schiffbruch erleidet. Zu diesem Zwecke spendiere ich Euch die „BEFEHLE.BAT“, die Ihr z.B. mit

 TYPE \BATCH\BEFEHLE.BAT>>C:\AUTOEXEC.BAT

an die „AUTOEXEC.BAT“ hängen könnt:

01: @echo off
02: set bn=BREAK ON
03: set bf=BREAK OFF
04: set cd=CHKDSK<SPACE>
05: set c=COPY<SPACE>
06: set w=DATE<SPACE>
07: set d=)DO<SPACE>
08: set e=ECHO<SPACE>
09: set fa=FOR %%A IN (
10: set f=FORMAT<SPACE>
11: set g=GOTO<SPACE>
12: set ir=IF ERRORLEVEL<SPACE>
13: set ie=IF EXIST<SPACE>
14: set ine=IF NOT EXIST<SPACE>
15: set inp=IF NOT %
16: set ip=IF %
17: set l=LABEL<SPACE>
18: set a=PATH<SPACE>
19: set p=PAUSE
20: set r=PROMPT
21: set s=SET<SPACE>
22: set h=SHIFT
23: set z=TIME<SPACE>
24: set t=TYPE<SPACE>
25: echo Alle internen Befehle in Variablen echo gepackt.
26: echo Info durch SET Befehl !

Zeilennummern nebst Doppelpunkt sind nicht abzutippen und <SPACE> steht für die Leertaste !

Lars Aschenbach

hilfe/tipps/sonstiges/tipps/sonstiges/larsaschenbach/batchkleiner.txt · Zuletzt geändert: 06/09/2006 00:09 (Externe Bearbeitung)