Allgemeine Beschreibung zur Auswahl von Dateien und zur Verwendung von Optionen und Zeitangaben
18xx/PC V2.22g - Dirk Clemens - 2004-05-07
Homepage Start Neuigkeiten Download Hauptseiten Überblick 18xx Spiele kleine 1x8 18xx/PC Geschichte Links Index Programme Überblick 18xx.exe 18config.exe 18export.exe 18string.exe 18check.exe 18list.exe Varianten 18xx 1825 1826 1828 1829 1830 1835 1837 1839 1841 1842 1844 1847 1849 1851 1853 1856 1862 1869 1870 1895 1898 2038
Inhaltsverzeichnis
- 1. Einführung
- 2. Dateinamen und Pfade
- 3. Listen von Dateinamen
- 4. Dateiattribute
- 5. Datumsangaben
- 6. Suchlisten
- 7. Aufbau von Optionen
- 8. Antwortdateien (response files)
1. Einführung
Diese Datei ist eine allgemeine Beschreibung, wie Dateilisten, Optionen und weitere Parameter meinen Programmen im allgemeinen übergeben werden.Dateien haben neben ihrem Inhalt ein paar weitere Merkmale:
- Dateinamen
- Namen der übergeordneten Verzeichnisse
- Dateigröße
- Zeitpunkt der Erzeugung
- Dateiattribut
Über alle diese Merkmale können Dateien ausgewählt werden. Die Auswahl geschieht dabei u.a. durch Optionen, die bei allen Programmen gleich sind. Da die Programmparameter zusammen nur 127 Zeichen lang sein dürfen, können diese Parameter auch in einer Textdatei abgespeichert und der Dateiname dem Programm übergeben werden. Diesen Mechanismus nennt man 'Antwortdateien' oder 'response files'.
2. Dateinamen und Pfade
2.1 Aufbau eines Dateinamens
Als erstes wird der Aufbau eines vollständigen Dateinamens beschrieben. Ein vollständiger Dateiname besteht aus vier Elementen:Laufwerk:\Verzeichnis\Name.Typ
Die Laufwerksbeschreibung besteht aus einem Buchstaben und dem Doppelpunkt. Zur Verzeichnisbeschreibung gehört alles nach der Laufwerksangabe bis zum letzten Vorkommen von '\' einschließlich dieses Zeichens. Ist das erste Zeichen der Verzeichnisangabe auch ein '\', dann handelt es sich um eine absolute Pfadangabe, anderenfalls um eine relative Pfadangabe. Laufwerk und Verzeichnis geben die logische Position der Datei an und Name und Typ legen den eigentlichen Dateinamen fest. Die letzteren beiden sind durch einen Punkt voneinander getrennt.
2.2 Verknüpfungen von Dateinamen
In der Regel gibt man nicht die vollständigen Dateinamen an, sondern nur einzelne Teile hieraus an, wie z.B. Name und Typ. Diese werden intern dann zu einem vollständigen Dateinamen zusammengesetzt, indem sie mit irgendwelchen Voreinstellungen verknüpft werden.Wird Dateiname B mit Dateiname A verknüpft, dann werden alle in B nicht definierten Elemente (Laufwerk, Verzeichnis, Name, Typ) aus A entnommen, falls dort vorhanden. Hat B nur eine relative Verzeichnisangabe, so wird die Verzeichnisangabe aus A als Basis verwendet.
Die folgende Tabelle erläutert die Verknüpfung von Dateinamen. Der Dateiname (B) wird jeweils mit der Voreinstellung (A) verknüpft.
Beispiele Voreinstellung (A) Dateiname (B) resultierender Dateiname c:\lib\source\xyz.h abc c:/lib/source/abc.h c:\lib\source\xyz.h abc.x c:/lib/source/abc.x c:\lib\source\xyz.h .x c:/lib/source/xyz.x c:\lib\source\xyz.h ..\ c:/lib/xyz.h c:\lib\source\xyz.h test\abc.x c:/lib/source/test/abc.x c:\lib\source\xyz.h \test\abc.c c:/test/abc.c c:\lib\source\xyz.h ..\test\abc.c c:/lib/test/abc.c c:\lib\source\xyz.h d: d:/lib/source/xyz.h 111\222\333\ test 111/222/333/test 111\222\333\ test\ 111/222/333/test/ 111\222\333\ ..\test\ 111/222/test/ 111\222\333\ ..\..\test\ 111/test/ 111\222\333\ \test\ /test/
2.3 Normierung eines Dateinamens
Die Dateinamen müssen vor ihrer Verarbeitung noch normiert werden. Mit dieser Normierung werden gleichzeitig noch Abkürzungen für das aktuelle Verzeichnis, für das Verzeichnis der temporären Dateien, für das Verzeichnis des aufgerufenen Programmes und für den vollständigen Dateinamen des aufgerufenen Programmes erkannt. Außerdem können Umgebungsvariablen verwendet werden. Dazu werden die Dateinamen werden nach den folgenden Regeln analysiert und normiert, wobei die Regeln auch mehrfach angewendet werden:
- Beginnt der Pfadname mit '~~~~', dann wird der Restpfad mit dem kompletten Programmpfad des aufgerufenen Programmes verknüpft. Ohne weiteren Restpfad erhält man den kompletten Programmpfad.
- Beginnt der Pfadname mit '~~~', dann wird der Restpfad mit dem Laufwerk und dem Verzeichnis des Programmpfades verknüpft. Ohne weiteren Restpfad erhält man Laufwerk und Verzeichnis des Programms.
- Beginnt der Pfadname mit '~~', dann wird der Restpfad mit dem Laufwerk und Verzeichnis des TEMP-Pfades verknüpft. Ohne weiteren Restpfad erhält man Laufwerk und Verzeichnis des TEMP-Pfades.
Der TEMP-Pfad ist ein Verzeichnis, der durch die Umgebungsvariable 'TEMP' festgelegt ist. Ist 'TEMP' undefiniert, dann wird 'TMP' verwendet. Ist auch 'TMP' undefiniert, dann wird das aktuelle Verzeichnis verwendet.
- Beginnt der Pfadname mit '~', dann wird der Restpfad mit dem aktuellen Laufwerk und dem aktuellen Verzeichnisse verknüpft. Ohne weiteren Restpfad erhält man den aktuellen Pfad.
- Beginnt der Pfadname mit 'NAME:' und besteht NAME aus mindestens zwei Zeichen und ist dabei eine gültige Umgebungsvariable, dann wird der Restpfad mit dem Inhalt der Variablen verknüpft. Der neue Pfadname wird wieder auf die obigen Dinge untersucht. Damit sind Angaben wie z.B. 'TEMP:ABC.H' möglich.
- Beginnt der Pfadname mit 'NAME~' und besteht NAME aus mindestens zwei Zeichen und ist dabei eine gültige Umgebungsvariable, dann wird die Angabe 'NAME~' textuell durch den Inhalt der Variable ersetzt. Der neue Pfadname wird wieder auf die obigen Dinge untersucht.
- Die Angabe '\\' wird durch '\' ersetzt.
- Die Angabe '\.\' wird durch '\' ersetzt.
- Die Angabe '\..\' wird zusammen mit dem übergeordneten Verzeichnis entfernt, falls ein solches existiert.
- Die Angabe 'Verzeichnis.\' wird durch 'Verzeichnis\' ersetzt.
- Dateinamen werden auf acht Zeichen im Namen und 3 Zeichen in der Erweiterung gekürzt. Dateinamen, die Platzhalter erlauben, dürfen beliebig lange Namensbezeichnungen und Erweiterungen haben. Dieses gilt auch innerhalb der Verzeichnisspezifikation.
2.4 Verwendung von Platzhaltern
Bei einigen Programmen können Suchmasken mit Platzhaltern verwendet werden. Ein Beispiel wäre die Verwendung von Platzhaltern in Dateinamen, um eine ganze Gruppe von Dateien zu selektieren. Aus allen möglichen Eingaben werden dann nur diejenigen verwendet, die zur jeweiligen Suchmaske passen. Ein Platzhalter paßt dabei eine gewissen Anzahl und eine gewisse Klasse von Zeichen. Als Platzhalter existieren die folgenden Möglichkeiten:
- '\' oder '^'
Die beiden Zeichen '\' und '^' sind gleichwertig. Das folgende Zeichen wird nicht als Platzhalter angesehen, sondern als ein ganz normales Zeichen, welches in der Vorlage vorhanden sein muß. Innerhalb von Dateinamen trennt '\' jedoch eine Verzeichnisangabe von dem restlichen Pfad.- ' '
Das Leerzeichen steht für ein Leerzeichen oder für ein Steuerzeichen mit einem ASCII Kode <32. Um nur genau ein Leerzeichen zuzulassen, sollte '\ ' oder '^ ' verwendet werden.- '?'
Das Fragezeichen steht für genau ein beliebiges Zeichen.- '*'
Der Stern steht für Null bis beliebig viele Zeichen. Anders als unter DOS werden hier auch die Zeichen nach dem Stern beachtet.- '+'
Das Pluszeichen steht für ein bis beliebig viele Zeichen.- '#'
Das Doppelkreuz steht für eine bis beliebig viele Ziffern.- '[]'
Mit den eckigen Klammern wird eine bestimmte Klasse von Zeichen definiert. Innerhalb der Klammern steht eine Liste von Zeichen. Zeichen, die durch '-' voneinander getrennt sind, definieren einen Bereich. So bedeutet '[afx-z]', daß dieser Platzhalter auf die Buchstaben 'afxyz' paßt. Steht als erstes Zeichen ein '-' (z.B. '[-afx-z]'), dann paßt dieser Platzhalter auf alle Zeichen außer den genannten.Normalerweise wird das Vorhandensein genau eines Zeichens überprüft. Ist das erste Zeichen nach der Klammer und dem evtl. vorhandenen Minuszeichen ein '+', dann paßt der Platzhalter auf ein bis beliebig viele Zeichen. Ist dieses Zeichen ein '*', dann paßt der Platzhalter auf Null bis beliebig viele Zeichen.
Beispiele: '[+a]' paßt auf ein bis beliebig viele 'a', '[-*0-9]' paßt auf Null bis beliebig viele Zeichen, die keine Ziffer enthalten.
- '{|}' oder '{!}'
Innerhalb der geschweiften Klammern werden mehrere Alternativen angegeben, die voneinander durch ein '|' oder durch ein '!' getrennt sind. Die Zeichenkette muß auf mindestens eine der Alternativen passen. Es dürfen auch leere Alternativen verwendet werden. Innerhalb der Alternativen dürfen wieder alle genannten Platzhalter, auch '{|}', verwendet werden. Das '!'-Zeichen dient als Ersatz für '|', da letzeres häufig für den Kommandointerpreter (->pipe) reserviert ist.Beispiele:
- '{ab!ba}c' paßt auf 'abc' oder 'bac'.
- '*{ab!}c' paßt auf '*abc' oder '*c'.
- '{{aa!bb!}cc!xyz}' paßt auf 'aacc', 'bbcc', 'cc' oder 'xyz'.
- '{a*!*z}' paßt auf 'a*' oder '*z'.
2.4.1 Platzhalter in Dateinamen
Einige Programme unterstützen auch Platzhalter in Datei- und Verzeichnisnamen. Durch Platzhalter können Gruppen von Dateien ausgewählt werden, die zu dem vorgegebenen Muster passen. Die im vorherigen Abschnitt beschriebenen Möglichkeiten von Platzhaltern sind sowohl in den Dateinamen als auch in den Verzeichnisnamen möglich. Hinzu kommen für die Verzeichnisse die folgenden Möglichkeiten:
- '&\'
Paßt auf Null bis beliebig viele Unterverzeichnisse. Die Verzeichnisplatzhalter sollten, wie hier angegeben, von einem '\' gefolgt werden.- '&&\'
Paßt auf ein bis beliebig viele Unterverzeichnisse.- '&n\'
Paßt auf genau n Unterverzeichnisse.- '&n:\'
Paßt auf n bis beliebig viele Unterverzeichnisse.- '&:m\'
Paßt auf Null bis m Unterverzeichnisse.- '&n:m\'
Paßt auf n bis m Unterverzeichnisse.Für die Laufwerksbezeichnung sind als Platzhalter nur '[]', '*', '+' oder '?' erlaubt. Die letzten drei Platzhalter haben alle die gleiche Bedeutung. Innerhalb der eckigen Klammern sind nur Buchstaben und das Minuszeichen zulässig.
Es muß beachtet werden, daß jeder Dateiname einen Punkt '.' enthält. Die Datei 'ANA' heißt genaugenommen 'ANA.'. Im folgenden ein paar Beispiele zur Verwendung der verschiedenen Platzhalter.
Beispiele Platzhalter Beschreibung * oder *.* Alle Dateien des aktuellen Verzeichnisses. Die beiden Formen zeigen nur bei Verknüpfungen einen Unterschied. *. Alle Dateien des aktuellen Verzeichnisses, die keine Typbezeichnung haben. *.+ Alle Dateien des aktuellen Verzeichnisses, die eine Typbezeichnung haben. +.+ Alle Dateien des aktuellen Verzeichnisses, die jeweils mindestens ein Zeichen im Namen und in der Erweiterung haben. *.[hc] Alle Dateien des aktuellen Verzeichnisses, die mit '.c' oder '.h' enden. *#* Alle Dateien des aktuellen Verzeichnisses, die mindestens eine Ziffer im Namen oder der Typangabe enthalten. [-*0-9] Alle Dateien des aktuellen Verzeichnisses, die keine Ziffer enthalten. a*b\* Alle Dateien, die sich in einem Unterverzeichnis befinden, dessen Name mit 'a' beginnt und mit 'b' endet. \&\file*#.[hc] Alle Dateien aus allen Verzeichnissen oder Unterverzeichnissen, dessen Namen mit 'file' beginnen und mit einer oder mehrerer Ziffern enden und die Endung '.c' oder '.h' haben. \lib\&\[x-z]*\* Alle Dateien unter '\LIB', die sich in einem Verzeichnis befinden, das mit 'x', 'y' oder 'z' beginnt. &2:\*.c Alle '.c' Dateien, die sich in mindestens einem Unterverzeichnisse der Ebene zwei befinden. \&\inc*\&\*.h[*p] Alle Dateien, die sich in einem Verzeichnis befinden, das mit 'inc' beginnt, oder sich in dessen Unterverzeichnis befinden, und mit '.h', '.hp' oder '.hpp' enden. {inc!def}*\*.h{!pp} Alle Dateien, die mit '.h' oder '.hpp' enden und sich in einem Unterverzeichnis der Ebene 1 des aktuellen Verzeichnisses befinden, das mit 'inc' oder 'def' beginnt. \&\{abc*!*{xx!yy}} Alle Dateien, die mit 'abc' beginnen oder mit 'xx' oder 'yy' enden. \&\* Alle Dateien des Laufwerks. \&&\* Alle Dateien des Laufwerks, die sich nicht im Hauptverzeichnis befinden. *:\&\* Alle Dateien aller Laufwerke. [c-ek]:\&\* Alle Dateien der Laufwerke 'C:', 'D:', 'E:' und 'K:'.
3. Listen von Dateinamen
Viele Programme erlauben eine beliebige Anzahl von Dateinamen. Dabei werden die Parameter in Listen von Dateinamen aufgeteilt, wobei die einzelnen Dateinamen auch Platzhalter enthalten können.Die Trennung zweier Listen erfolgt durch eine Option, durch ein Komma oder durch ein Semikolon. Die Dateinamen einer solchen Liste werden immer mit dem vorherigen Dateinamen verknüpft. Der erste Dateiname wird dabei meißtens mit '~*.*', also alle Dateien des aktuellen Verzeichnisses, verknüpft. Somit werden durch 'SUB\\F*.C .H' alle Dateien des Unterverzeichnisses 'SUB\\' angesprochen, die mit einem 'F' beginnen und die Endung '.C' oder '.H' haben.
4. Dateiattribute
Zu jeder Datei existiert ein Byte als Dateiattribut mit acht Bits:
Attribute der Dateien Bit Dez Hex Beschreibung Bit-0 1 0x01 Readonly; Schutz vor überbeschreiben/löschen Bit-1 2 0x02 Hidden; die Datei ist teilweise nicht sichtbar Bit-2 4 0x04 System; die Datei ist eine Systemdatei Bit-3 8 0x08 Volume label; keine Datei, Platten-/Diskettenname Bit-4 16 0x10 Directory; die Datei ist ein Verzeichnis Bit-5 32 0x20 Archive; die Datei ist nicht archiviert worden Bit-6 64 0x40 unbenutzt Bit-7 128 0x80 unbenutzt Manche Programme, wie z.B 'XDIR' mittels der Option '-A', können Dateien anhand von Attributen auswählen. Alle Dateien, auch Verzeichnisse, haben ein Attribut. Dieses Attribut ist in einem Byte abgespeichert und enthält somit insgesamt 8 Bits. Die Bedeutung der acht Bits ist durch die obige Tabelle erklärt.
Es werden nur Dateien gesucht, die die passenden Dateiattribute haben. Das übergebene Attribut ist 16 Bits lang und wird in zweimal acht Bits, also in zwei Bytes, aufgeteilt. Die Bits, die im niederwertigen Byte nicht gesetzt sind, dürfen im Dateiattribut auch nicht gesetzt sein. Die Bits, die im höherwertigen Byte gesetzt sind, müssen im Dateiattribut gesetzt sein.
Wird z.B. als Attributwort der Wert 0x2003 (höherwertiges Byte: Bit 5; niederwertiges Byte: Bits 0 und 1) verwendet, dann werden Dateien gefunden, die das Archiv-Bit gesetzt haben und von den anderen Bits höchstens das Readonly- und das Hidden-Bit gesetzt haben, aber kein anderes.
5. Datumsangaben
Datumseingaben erfolgen in Form einer absoluten Zeitangabe, einer relativen Zeitangabe oder einer Kombination aus beiden. Der Aufbau ist also wie folgt, wobei eckige Klammern optionale Teile und die senkrechten Striche Alternativen markieren. Innnerhalb einer Zeichenkette zur Datumseingabe sollten keine Leerzeichen vorkommen; sie dienen hier nur zur Übersichtlichkeit.
Syntax der Datumsangaben 1. Zeitangabe [AbsoluteZeit] [RelativeZeit] 2. Gerundete-Zeit 'M'Zahl | 'S'Zahl 3. Absolute-Zeit :== [Datum] [,Zeit] 4. Relative-Zeit -[Tage] [,Zeit] 5. Datum dd | yyy | yyyy | dmmyy | ddmmyy | dmmyyyy | ddmmyyyy | dd.mm.yyyy | dd/mm/yyy 6. Zeit hh | hmm | hhmm | hmmss | hhmmss | hh.mm.ss | hh/mm/ss 7. Tage :== Zahl Erklärungen:
- Eine Zeitangabe besteht entweder aus einer gerundeten Zeitangabe, aus einer absoluten Zeitangabe, aus einer relativen Zeitangabe, aus einer Kombination aus absoluter und gerundeter Zeitangabe oder aus Nichts. Fehlt die absolute Zeitangabe, dann wird das aktuelle Datum und die aktuelle Zeit verwendet.
- Die Gerundete Zeitangabe ist die absolute Zeit, die auf Stunden (H), Minuten (M) oder Sekunden (S) abgerundet wird. Die folgende Zahl aus dem Bereich 1 bis 30 gibt die Vielfachen an, die erlaubt sind.
- Die absolute Zeitangabe setzt sich aus einem Datumsfeld und einem Zeitfeld, welches durch ein Komma eingeleitet wird, zusammen. Fehlt das Datumsfeld, so wird heute verwendet. Fehlt das Zeitfeld, so wird 0:00:00 Uhr verwendet.
- Die relative Zeitangabe setzt sich aus einem Vorzeichen, einer Tagesdifferenz und einem Zeitfeld, welches durch ein Komma eingeleitet wird, zusammen. Fehlt die Tagesdifferenz oder das Zeitfeld, so wird Null verwendet. Diese relative Angabe wird zur absoluten Angabe addiert oder subtrahiert.
- Ein Datum setzt sich aus einer 1 bis 8 ziffrigen Zahl zusammen. Je nach Anzahl der Ziffern wird der Tag (d), der Monat (m) und das Jahr (y) definiert. Sollte die Angabe für Tag oder Monat fehlen, dann wird jeweils '01' verwendet. Bei Jahresabgaben ohne Jahundertangabe werden die Jahre 1980 bis 2079 verwendet. Die Felder können auch durch '.' oder '/' voneinander getrennt sein.
- Eine Zeit setzt sich aus einer 1 bis 6 ziffrigen Zahl zusammen. Je nach Anzahl der Ziffern wird die Stunde (h), die Minute (m) und die Sekunde (s) definiert. Sollte die Angabe für Minute oder Sekunde fehlen, dann wird jeweils '00' verwendet. Die Felder können auch durch '.' oder '/' voneinander getrennt sein.
- Die Tagesdifferenz ist eine einfache Zahl.
Beispiele von Datumsangaben Angabe Beschreinbung (ohne Angabe) Heute, jetzige Zeit 3 3. Tag des aktuellen Monats 13 13. Tag des aktuellen Monats 283 1. Februar 1983 00:00:00 1283 1. Januar 1283 00:00:00 51283 5. Dezember 1983 00:00:00 251283 25. Dezember 1983 00:00:00 , Heute 00:00:00 ,1 Heute 01:00:00 ,12 Heute 12:00:00 ,123 Heute 01:23:00 ,1234 Heute 12:34:00 ,12345 Heute 01:23:45 ,123456 Heute 12:34:56 020492,132601 2. April 1992 13:26:01 +3 Heute +3 Tage, jetzige Zeit -3 Heute -3 Tage, jetzige Zeit +,3 Heute/Jetzt +3 Stunden -,003 Heute/Jetzt -3 Minuten +3,4 Heute/Jetzt + 3 Tage + 4 Stunden 220492,132601-2,2504 22. April 1992 13:26:01 -2 Tage -25 Stunden -4 Minuten
==> 19. April 1992 12:22:0191+321,1234 1.1.1991 +321 Tage +12 Stunden +34 Minuten
==> 18. November 1991 12:34:00
6. Suchlisten
Soll eine Datei eingelesen werden, so wird die angegebe Datei gemäß einer Suchliste in verschiedenen Verzeichnissen gesucht. Ein Suchliste ist dabei eine Liste von 1-N Elementen, die voneinander mittels Semikolon (';') oder Komma (',') getrennt sind.Besteht ein einzelnes Element nur aus einem Minuszeichen ('-'), dann wird dieses Element ignoriert. Beginnt ein Element mit dem AT-Symbol ('@'), dann wird der folgende Text als Referenz auf eine weitere Umgebungsvariable angesehen, deren Inhalt anstelle der Referenz eingefügt wird und die wiederum Referenzen enthalten darf.
Anderenfalls (weder '-' noch '@...') handelt es sich bei dem Element um einen Verweis auf ein Verzeichnis, in denen die Datei gesucht werden soll. Dabei sind alle bei der Pfadangabe erlaubten Platzhalter erlaubt.
Eine leeres Element steht für das aktuelle Verzeichnis. Ist das letzte Zeichen einer Pfadangabe ein '+' (mit oder ohne folgendem '\\'), dann werden das angegebene und alle übergeordneten Verzeichnisse durchsucht.
Beispiel: 'ab;;~~,&1-2\\;v+;xy' Es werden nacheinander die folgenden Verzeichnisse durchsucht:
- '@ab': Die durch die Umgebungsvariable 'AB' definierten Verzeichnisse.
- '': Das aktuelle Verzeichnis
- '~~': Das TEMP-Verzeichnis.
- '&\\': Alle untergeordneten Verzeichnisse der Ebenen 1 bis 2.
- 'v+': Das Verzeichnis 'v' und alle zu 'v' übergeordneten Verzeichnisse.
- '@xy': Die durch die Umgebungsvariable 'XY' definierten Verzeichnisse.
Um endlose Rekursionen zu Vermeiden, werden Referenzen auf andere Umgebungsvariablen nur bis zu einer Tiefe von 10 ausgewertet.
7. Aufbau von Optionen
Die meißten Programme erwarten neben den eigentlichen Parametern Optionen, die den Ablauf des Programmes beeinflussen. Optionen unterscheiden sich von den normalen Parametern durch das einleitende Zeichen. Sie werden durch '+', '-' oder '/' eingeleitet und von einem Buchstaben, einer Ziffer oder einem Sonderzeichen gefolgt, z.B. '-a +B /3 -#'.Die meisten Optionen können wahlweise durch eines der drei genannten Zeichen eingeleitet werden. Nur wo explizit zwei oder drei verschiedene Bedeutungen in Abhängigkeit des Steuerzeichen definiert sind, muß das korrekte verwendet werden. Genauso wird bei den Optionen nicht zwischen Groß- und Kleinschreibung unterschieden, es sei denn, daß zwei verschiedene Optionen definiert sind.
Optionen erwarten teilweise einen Parameter. Dieser wird ohne Trennzeichen (auch kein Leerzeichen) oder nach einem der Trennzeichen '=', ':' oder ':=' an die Option angebunden, z.B. '-x123' oder '-x:=123'. Es gibt diesbezüglich fünf verschiedene Optionen:
- Optionen ohne Parameter.
- Optionen, die ein Zeichen als Parameter erwarten. Das nächste Zeichen nach der Option wird als Parameter verwendet. Soll dieses ein Leerzeichen sein, dann muß die Option in Anführungszeichen eingeschlossen werden ('-c '). Soll das Zeichen ein '=' oder ':' sein, daß muß ein Trennzeichen verwendet werden, z.B. '-c=='.
- Optionen, die eine ggf. vorzeichenbehaftete Zahl erwarten. Diese Zahl kann durch voranstellen von '0b' oder '0x' als Binär- oder Hexadezimalzahl ausgewertet werden. Ist die erste Ziffer eine '0', dann wird die Zahl als Oktalzahl ausgewertet, sonst als Dezimalzahl.
- Optionen, die eine Fließkommazahl erwarten.
- Optionen, die eine Zeichenkette verlangen. Soll die Zeichenkette Leerzeichen enthalten, so ist sie zusammen mit der Option in Anführungszeichen einzuschliessen, z.B. '-tDieses ist ein Textparameter'; Sollte das erste Zeichen der Zeichenkette ein '=' oder ':' sein, dann muß ein Trennzeichen verwendet werden, z.B. '-t==abc:'.
Zwischen Optionen braucht kein Leerzeichen zu stehen ('/i12/v' oder '-i12+v') und Optionen können auch zusammengefaßt werden ('-i12v'). Hinter Optionen mit Textparameter können sich keine weiteren Optionen befinden.
In den Optionserklärungen werden für die verschiedenen Parameterarten verschiedene Kennzeichen verwendet:
'&' für Zeichen, '#' für Ganzzahlen, '~' für Fließkommazahlen, '$' für Zeichenketten. Es existieren drei verschiedene Typen von Optionen: positionsunabhängige Optionen, positionsabhängige Optionen und rückwirkende Optionen.
- Positionsunabhängige Optionen gelten unabhängig ihrer Position innerhalb der Parameterliste. Bei dem mehrfachen Vorkommen einer Option gilt die am weitesten rechtsstehende. Optionen, zu denen nichts gegenteiliges geschrieben steht, sind positionsunabhängig.
- Positionsabhängige Optionen gelten von ihrer Nennung für alle nachfolgenden Parameter bis zu einer weiteren Nennung.
- Rückwirkende Optionen wirken nur auf die schon verarbeiteten Parameter.
7.1 Optionen zur Dateiauswahl
Die folgenden Optionen werden von vielen meiner Programme zur Dateiauswahl einheitlich verwendet. Die Parameter werden dabei in Listen von Dateinamen aufgeteilt. Die Trennung zweier Listen erfolgt durch eine Option, durch ein Komma oder durch ein Semikolon. Die Dateinamen einer Liste werden wie im Abschnitt Verknüpfungen von Dateinamen beschrieben miteinander verknüpft.
- '/±A$' (Attribute)
Dieses ist eine positionsabhängige Option. Ein Semikolon hebt die Wirkung auf. Es werden nur Dateien verwendet, die ein passendes Dateiattribut haben. Dabei wird das Attribut zur Auswahl in zweimal acht Bits, also in zwei Bytes, aufgeteilt. Die Bits, die im niederwertigen Byte nicht gesetzt sind, dürfen im Dateiattribut auch nicht gesetzt sein. Die Bits, die im höherwertigen Byte gesetzt sind, müssen im Dateiattribut gesetzt sein. (siehe auch Datei-Attribute)Der der Option folgende Text wird wie folgt interpretiert. Ist das erste Zeichen eine Ziffer, dann wird dem Auswahlattribut der Wert der folgenden Zahl zugewiesen.
Anderenfalls werden die folgenden Zeichen als einzelne Flags angesehen. Die einzelnen Bits werden durch 'rhsvda' in Klein- oder Großbuchstaben angesprochen. Durch '*' werden alle Bits auf einmal angesprochen. Nach '+' muß das entsprechende Bit im Dateiattribut gesetzt sein, nach '-' darf es nicht gesetzt sein und nach '/' ist es unerheblich. Diese drei Zeichen '+-/' dürfen auch innerhalb des Parameters verwendet werden. Als Voreinstellung gilt die Einleitung der Option.
- '-F' (Files)
Dieses ist eine positionsabhängige Option. Ein Semikolon hebt die Wirkung auf. Es werden nur einfache Dateien und keine Verzeichnisse verwendet. Die Option '-F' ist eine Kurzform für '-A0x00e7'.- '-D' (Directories)
Dieses ist eine positionsabhängige Option. Ein Semikolon hebt die Wirkung auf. Es werden nur Verzeichnisse verwendet. Die Option '-D' ist eine Kurzform für '-A0x10ff'.- '/±P$' (Pfad-Voreinstellung)
Dieses ist eine positionsabhängige Option. Ein Semikolon hebt die Wirkung auf. Es wird eine Liste von Verzeichnissen erwartet, wobei die Elemente durch Kommata oder Semikola getrennt werden. Ein Element kann anstatt eines Verzeichnisses auch ein '@' gefolgt von dem Namen einer Umgebungsvariablen enthalten. In diesem Fall wird der Eintrag durch den Inhalt der Umgebungsvariable ersetzt, der wiederum eine Liste enthalten kann (siehe Suchliste).Jede angegeben Datei wird in allen angegebenen Pfaden gesucht. Ohne diese Option wird Normalerweise nur das aktuelle Verzeichnis verwendet.
Bei '-P' wird automatisch der aktuelle Pfad an den Anfang der Suchliste gesetzt und bei '+P' an das Ende.
- '-R$' (Remove)
Die angegebenen Dateien -- ggf. eine durch Kommata unterteilte Liste -- werden wieder aus der Liste der zu verwendenen Dateien entfernt. Platzhalter sind erlaubt. Da dieses eine Rückwirkende Option ist, wird die Entfernung nur auf bisher ausgewertete Parameter angewendet. Dabei gelten die aktuellen Werte von Dateiattribut, Größenangaben und Datumsangaben (siehe -ADF -# und -@).- ' -##' (Größe)
Dieses ist eine positionsabhängige Option. Ein Semikolon hebt die Wirkung auf. Es werden nur Dateien verwendet, die kleiner sind als die angegebene Größe. Durch '-#0' wird diese Einschränkung wieder aufgehoben. Auf Verzeichnisse hat diese Option keine Wirkung.- ' +##' (Größe)
Dieses ist eine positionsabhängige Option. Ein Semikolon hebt die Wirkung auf. Es werden nur Dateien verwendet, die größer als oder gleichgroß wie die angegebene Größe sind. Durch '+#0' wird diese Einschränkung wieder aufgehoben. Auf Verzeichnisse hat diese Option keine Wirkung.- ' -@$' (Datum)
Dieses ist eine positionsabhängige Option. Ein Semikolon hebt die Wirkung auf. Es werden nur Dateien und Verzeichnisse verwendet, die älter als das angegebene Datum sind. Die Datumseingabe erfolgt wie unter Datumsangaben beschrieben.- '+@$' (Datum)
Dieses ist eine positionsabhängige Option. Ein Semikolon hebt die Wirkung auf. Es werden nur Dateien und Verzeichnisse verwendet, die jünger als oder gleich dem angegebenen Datum sind. Die Datumseingabe erfolgt wie unter Datumsangaben beschrieben.
8. Antwortdateien (response files)
Bei der Parameterübergabe existiert eine Einchränkung: Die Parameterzeile darf maximal 127 Zeichen lang sein. Um jedoch auch längere Parameterlisten zu verwenden, existiert die Möglichkeit, sogenannte Antwortdateien (response files) zu verwenden. Dieses funktioniert bei allen meinen Programmen.Ist das erste Zeichen eines Parameters ein '@', so bedeutet dieses, daß der Parameter durch den Inhalt einer Umgebungsvariablen oder einer Datei ersetzt werden soll. Zuerst wird eine gleichnamige Umegebungsvariable gesucht, wobei die Großschreibung unerheblich ist. Existiert eine solche Variable, dann wird der Parameter durch deren Inhalt ersetzt. Andernfalls wird nach einer Datei mit dem angegebenen Namen gesucht. Existiert diese Datei, dann wird der Parameter durch den Inhalt dieser Datei ersetzt.
Zeilenvorschübe und TABS werden dabei als Leerzeichen betrachtet. Die Datei darf wiederum Parameter mit '@' besitzen, die dann wieder eine Ersetzung auslösen. Sollte weder eine Umgebungsvariable noch eine Datei existieren, so wird der Parameter nicht ersetzt.
Es gibt zwei Spezialfälle:
- Die Verwendung von mehreren '' hintereinander (z.B. '@@variable') ist zusammen mit Umgebungsvariablen erlaubt. Als erstes wird '@variable' ausgewertet und durch den Inhalt der Variable ersetzt. Danach wird das nächste '@' ausgewertet und so fort.
- Beginnt ein Parameter mit '@~', dann wird nicht nach einer Umgebungsvariable sondern nur nach einer Datei gesucht.
Diese Seite wurde mit MakeDoc V3.22a erzeugt.
18xx/PC V2.22g - © Dirk Clemens - 2004-05-07
dc@18xx.de