Dokumentation zu Touch (c) 2003-2004 by Martin Wodrich
------------------------------------------------------

Inhaltsverzeichnis
------------------
1.    Einleitung
2.    Systemvoraussetzungen
3.    Dateiparameter
3.1   Eindeutige Dateien
3.2   Wildcards
3.3   Verzeichnismakros
3.4   Spezielle Dateien
4.    Dateiparameter mit besonderer Funktion
4.1   Referenzdatei
4.2   Jobdatei
5.    Datum/Uhrzeit festlegen
6.    Besondere Funktionen
6.1   Simulationslauf
6.2   Automatische Groschreibung
6.3   ZConnect-PUFFER erstellen
6.4   Interaktiver Modus
7.    Betriebsystemabhngigkeiten
7.1   Lange Dateinamen
7.2   Beenden von Touch
A.    Lizenz- und Nutzungsbedingungen
B.    Versionsgeschichte



1. Einleitung
-------------
Touch dient dazu, das Dateidatum mitsamt Uhrzeit auch von mehr als
einer Datei gleichzeitig anzupassen. Hierbei kennt mein Touch einige
spezielle Kniffe, die andere Implementierungen oft nicht haben.
Alle bearbeiteten Dateien werden mit vollstndigem Pfad ausgegeben.


2. Systemvoraussetzungen
-------------------------
Touch ist portabel geschrieben. Es kann daher fr fast jedes
Betriebsystem compiliert werden.

Derzeit sind folgende Versionen verfgbar:
- DOS16 (mit einschaltbarer LFN-Untersttzung)
- DOS16 (ohne LFN-Untersttzung)
- DPMI  (ohne LFN-Untersttzung)
- OS2   (ohne LFN-Untersttzung)
- WIN16 (ohne LFN-Untersttzung)

- DOS32 (mit automatischer LFN-Untersttzung)
- WIN32 (mit LFN-Untersttzung)
- OS2-EMX
- Linux
(weitere Betriebssysteme sind mglich)

Win64(AMD64) und Win64(IA64) sollte compilierbar sein, kann von mir aber
mangels 64Bit-Windows weder erstellt noch getestet werden.


3. Dateiparameter
-----------------
3.1 Eindeutige Dateien
----------------------
Touch kann mit fast beliebig vielen Dateien als Parameter aufgerufen
werden. Diese Dateien knnen mit und auch ohne vollstndigen Pfad
eingegeben werden.
Die Schreibweise (Gro- oder Kleinschreibung) aller Angaben - ob
Datei-, Verzeichnisnamen oder Parameterbezeichner ist beliebig.

Beispiel:
touch Datei1 C:\Datei2 d:\verz\datei3

Wichtig:
Wird ein Dateiname angegeben, der entweder im aktuellen Verzeichnis
(bei fehlender Dateiangabe) bzw. an der angegebenen Stelle nicht
existiert, so wird die Datei neu angelegt.


3.2 Wildcards
-------------
Als Dateiparameter sind ebenfalls sogenannte Wildcards erlaubt.
Diese allerdings ausschlielich im Dateinamen, nicht aber in
Verzeichnisangaben.

Beispiel:
touch datei? c:\cvs\*.*

Bei der Verwendung von Wildcards werden keine Dateien neu angelegt
wie das u.U. bei eindeutigen Dateien geschehen kann.


3.3 Verzeichnismakros
---------------------
Touch besitzt eine sehr umfassende Mglichkeit, um Verzeichnisangaben
in Kurzform anzugeben.

Es gibt folgende Verzeichnisangabenmakros:

#:     Auf allen Laufwerken Touch anwenden.
       Touch wird diese Angabe in bis zu 26 Einzelangaben auflsen.
       Jedes Laufwerk, das als beschreibbar gefunden wird, wird
       bearbeitet bzw. durchsucht.
       Aufgrund des Testes werden Diskettenlaufwerke einen kurzen
       Seek durchfhren, wenn keine Diskette eingelegt ist.

\#\    Bedeutet, dass Dateien in jedem Verzeichnis gesucht werden, das
       ein direktes Unterverzeichnis des Verzeichnisses ist, welches
       links von diesem Makro angegeben ist. Zustzlich wird auch noch
       das Verzeichnis durchsucht, welches sich ergeben wrde, wenn
       dieses Makro nicht eingegeben wrde.

\##\   Wie \#\, aber zustzlich auch alle Unterverzeichnisse der
       direkten Unterverzeichnisse. Und davon wieder alle
       Unterverzeichnisse. (Rekursive Suche nach allen Dateien
       unterhalb eines Verzeichnisses)

#      (Angabe ohne weitere Angaben)
       Dieses Makro wird einfach nur nach .\#\*.* aufgelst. Dies
       bedeutet also alle Dateien im aktuellen Verzeichnis sowie in
       allen direkten Unterverzeichnissen.

##     (Angabe ohne weitere Angaben)
       Dieses Makro wird nach .\##\*.* aufgelst. Es werden also alle
       Dateien im und unterhalb des aktuellen Verzeichnisses
       bearbeitet.

###    (Angabe ohne weitere Angaben)
       Dieses Makro wird nach #:\##\*.* aufgelst. Damit werden also
       alle Dateien erfasst, die berhaupt erreichbar sind.

Bei der Verwendung von Verzeichnismakros wird das Auflsen eines
solchen als "Expandiere Makro:" gefolgt von der Eingabe angezeigt.

Achtung:
Komplexere Makros durchlaufen mehrfach den Makroprozessor von Touch.
Dies schlgt sich in mehrfachen Ausgaben von "Expandiere Makro:"
nieder. Dabei bezeichnet jede Ausgabe einen Schritt beim Auflsen.
Insbesondere alle Makros mit 2 oder mehr Rautezeichen # knnen
beliebig viele Zeilen erzeugen.
Der Makroprozessor lst iterativ die eingegebenen Makros auf.

Bei der Verwendung von Verzeichnismakros knnen auch Dateien neu
angelegt werden, solange die Dateiangabe eindeutig ist und keine
Wildcards enthlt.

3.4 Spezielle Dateien
---------------------
Touch verndert normalerweise versteckte Dateien sowie Systemdateien
nicht, sondern nur durch direkte Angabe des Parameters.

mit /S knnen auch Systemdateien erfasst werden.
mit /H auch versteckte Dateien.

Diese Angaben knnen auch beide zusammen benutzt werden.


4. Dateiparameter mit besonderer Funktion
-----------------------------------------
4.1. Referenzdatei
------------------
Touch untersttzt die Verwendung einer Referenzdatei. Dies ist eine
Datei, deren Dateidatum und Uhrzeit auf alle anderen angegebenen
Dateien kopiert wird. Es ist dabei egal, an welcher Stelle der
Parameter-Liste die Referenzdatei angegeben wird. Sie bezieht sich
immer auf alle angegebenen Dateien. Die Referenzdatei wird durch ein
vorgestelltes /R= als solche kenntlich gemacht.

(Als alias fr /R= kann ebenso auch /F= fr die Angabe der
Referenzdatei genommen werden).

Beispiel:
touch datei1 /R=datei2 datei3
(Kopiert das Dateidatum und die Uhrzeit von Datei2 auf Datei1 und
Datei3)

4.2 Jobdatei
------------
Die zu touchenden Dateien mssen nicht unbedingt als Parameter an Touch
bergeben werden. Sie knnen auch als Liste in einer Datei geschrieben
sein. Diese Datei wird Touch dann mit vor dem Dateinamen gestelltem
/J= als solche kenntlich gemacht.
Es existieren die gleichen Mglichkeiten bezglich Makros und Wildcards
wie bei der bergabe als Parameter.
Auch die Jobdatei kann an beliebiger Stelle in der Parameterliste stehen.


5. Datum/Uhrzeit festlegen
--------------------------
Mit /t=Uhrzeit kann eine Uhrzeit bergeben werden, welche dann bei
allen als Parameter bergebenen Dateien gesetzt wird.
Die Angabe einer Uhrzeit geschieht im Format hh:mm:ss, also Stunde,
Minute und Sekunde jeweils durch Doppelpunkt getrennt.

Mit /d=Datum kann entsprechend ein Datum bergeben werden.
Dieses wird dabei im Format tt.mm.yy oder tt.mm.yyyy eingegeben.
Das heit Tag, Monat und Jahr werden durch einen Punkt getrennt.
Das Jahr kann zweistellig, aber auch 4-stellig eingegeben werden.

Bei diesen Angaben wird ein Plausibilittstest gemacht, bevor sie auf
irgentwelche Dateien angewendet werden. Sind diese Angaben nicht
plausibel, so bricht Touch ab. Ebenso wenn Referenzdatei und
Datum/Uhrzeit gesetzt wird.

Wird nur Datum oder nur Uhrzeit vorgegeben, so wird die fehlende
Angabe an den Dateien nicht verndert. Fehlt jegliche Angabe von
Datum und Uhrzeit so wird das aktuelle Datum und die aktuelle
Zeit bei Programmstart benutzt. Luft Touch also mehrere Sekunden
so haben dennoch alle Dateien die gleiche Uhrzeit und Datumsangabe.


6. Besondere Funktionen
-----------------------
6.1 Simulationslauf
-------------------
Wird der Parameter /V (Vortuschmodus) benutzt, so wird Touch alles
ausgeben, was es bei einem regulren Lauf ausgeben wrde, allerdings
keine Vernderungen an Dateidatum/Uhrzeit hinterlassen.
Insbesondere werden auch alle Makros aufgelst. Dies bedeutet
allerdings, dass der Seek auf allen Diskettenlaufwerken ebenfalls
durchgefhrt wird!!!

6.2 Automatische Groschreibung
-------------------------------
Mit dem optionalen Parameter /G kann erreicht werden, dass alle Dateien
nach dem Touchlauf in Grobuchstaben im Verzeichnis stehen.

Der Parameter /K sorgt dafr, dass das Dateidatum und die Dateizeit
nicht verndert wird. Dieser Parameter ist nur bei Verwendung des
Parameters /G wirksam, sonst wird er ignoriert.

6.3 ZConnect-PUFFER erstellen
-----------------------------
Normalerweise erstellt Touch Dateien mit 0 Bytes Gre. Wird das
Argument /ZC angegeben, so erstellt Touch stattdessen ZConnect-PUFFER
mit einer Testnachricht. Dabei enthlt jede Datei exakt eine Nachricht,
mit eindeutiger Message-ID.

6.4 Interaktiver Modus
----------------------
Wird der Parameter /I angegeben so liest Touch Informationen ber
zu bearbeitende Dateien ber Standard-Input.


7. Betriebsystemabhngigkeiten
------------------------------
7.1 Lange Dateinamen
--------------------
Touch untersttzt lange Dateinamen (LFNs) sofern das Betriebsystem
diese anbietet.
Fr DOS-Realmode (DOS16) mu diese Untersttzung derzeit per Argument
(/LFN) eingeschaltet werden. Es existiert mit TOUCHNLF.ZIP aber auch
eine Version ganz ohne LFN-Untersttzung.
Fr 16 Bit DOS-Protected-Mode (DPMI) und Win16 ist die Untersttzung nicht
verfgbar, da Windows 16 Bit dies nicht bietet und die Untersttzung
fr 16 Bit DOS-Protected-Mode nicht sicher ist.
Alle 32 Bit Compilate (DOS32 und WIN32) knnen automatisch lange
Dateinamen nutzen.

7.2 Beenden von Touch
---------------------
Normalerweise beendet sich Touch sobald es mit seiner Aufgabe
fertig ist. Unter WIN16 kann mit dem Argument /nc dies verhindert
werden, da unter dieser Platform Touch in einem eignen Fenster
luft und sich dieses unter Umstnden zu schnell schliet.
Dieser Parameter existiert nur fr WIN16.


A. Lizenz- und Nutzungsbedingungen
----------------------------------
Touch ist Freeware.

Grundstzlich gilt: Die Datei Touch.exe bzw. Touch.pas darf nur
zusammen mit diesem Text verbreitet werden.


B. Versionsgeschichte
---------------------
- 1.0 (09.08.2003):
  -----------------------
  - Erste stabile Fassung von Touch.
  - Compilate fr DOS16,DOS32 und WIN32 verfgbar.

- 1.1 (09.11.2004):
  -----------------
  - Die Ausgabe von Touch kann nun in eine Datei
    umgeleitet werden.
  - Abfangen des Versuchs Touch selbst zu touchen.
  - Einfhrung einer Spezialversion ohne LFN-Untersttzung.

- 1.2 (18.11.2004):
  ------------------------
  - Neues Feature Jobfile.
  - Neues Feature ZC-PUFFER-Erstellung.
  - Neue Platformen Win16 und OS2 verfgbar.
  - Hilfe berarbeitet.
  - Dokumentation berarbeitet.

Waltrop, 28.11.2004

Martin Wodrich
