File: /~heha/hs/dos/dirtouch.zip/DIRTOUCH.TXT

Directory Touch (haftmann#software): Dateidatum setzen / aktualisieren
 Das Besondere daran ist das Besondere darin: das Setzen des Datums von
 Verzeichnissen erfolgt durch Sektorzugriff auf die Diskette / Festplatte;
 DOS bietet hierfür keine anderen Möglichkeiten. 01/03: mit LFN-Unterstützung

| Arbeitsweise:
+--------------
 Das Programm holt sich anfangs die Uhrzeit des Rechners, die mit den
 Parametern /d, /t, /g, /j und /v modifiziert werden kann. Diese Zeit kann
 mit /i angezeigt werden; die Position in der Kommandozeile bestimmt das
 Ergebnis. Alternativ kann eine Datei (mit Option /f) als Quelle von Datum
 und Uhrzeit dienen.
 Die Kommandozeile wird von links nach rechts abgearbeitet, sodass
 >dirtouch autoexec.bat /f config.sys
 die AUTOEXEC.BAT auf das aktuelle Datum gesetzt wird und nicht auf dasselbe
 wie die CONFIG.SYS. Das Datum der CONFIG.SYS wird erst nach dem TOUCH der
 AUTOEXEC.BAT ausgelesen und dann verworfen.

 Auf diese Weise können mit einem DIRTOUCH-Aufruf verschiedene Dateien
 auf verschiedene Zeiten gesetzt werden, solange die Kommandozeile reicht.

| Beispiele:
+-----------
>dirtouch .		- setzt das Verzeichnis . und den Eintrag im
	übergeordneten Verzeichnis auf aktuelles Datum.
	Zu den ..-Einträgen siehe unten.

>dirtouch /f quelle.txt henni	- kopiert die Uhrzeit von quelle.txt nach
	henni. Ist henni ein Verzeichnis, wird auch . im Vrz. henni gesetzt.

>dirtouch *.txt	- setzt alle Dateien mit Endung TXT auf das aktuelle Datum.
	Auch wenn DIRTOUCH eine Weile dazu braucht, bekommen alle Dateien
	das gleiche Datum. Sollte sich ein Verzeichnis mit dieser Endung
	darunter befinden, wird es ebenfalls geTOUCHt. Die Dateien DARIN werden
	nicht berührt.

>dirtouch /v7.01 *.exe *.dll		- setzt das Datum von heute, aber als
	Uhrzeit die "Versionsnummer" 7.01, für alle Dateien mit .EXE und .DLL

>dirtouch /f *.dll /v 7.01.22 /i *.dll		- setzt die DLLs auf das
	Datum der ersten gefundenen DLL, die Uhrzeiten jedoch mit
	"Versionsnummer" 7.01.22. Zur Kontrolle erfolgt die Ausgabe des zu
	setzenden Dateidatums.

| Interessante Nebenanwendungen:
+-------------------------------
>dirtouch /i			- zeigt aktuelles Datum und Uhrzeit an
>dirtouch /f=autoexec.bat /i	- zeigt Dateidatum mit Sekunden(!) an
>dirtouch /g01.01.2000 /i	- Das Programm ist Jahr-2000-sicher.
	(Wird das Jahrhundert weggelassen, wird stets das aktuelle verwendet.)

| Der DOS- und der UNIX-Modus:
+-----------------------------
 DOS und UNIX verwalten Verzeichnisse auf verschiedene Weise.
 Unter DOS haben der Verzeichnisname und die darin befindlichen
 symbolischen Namen . und .. das gleiche Erstellungsdatum.
 Dieses Verhalten wird standardmäßig von DIRTOUCH nachgebildet.

 Unter UNIX zeigen die Einträge auf einen inode, der die Zeit speichert.
 Um dieses Verhalten auf Wunsch nachzubilden, modifiziert DIRTOUCH
 den Verzeichnisnamen, den symbolischen Namen . sowie alle .. in den
 darin untergeordneten Verzeichnissen.

 Der Schalter /u schaltet zwischen den beiden Modi hin und her.

| Grenzen des Programms:
+-----------------------
- Im Gegensatz zu UNIX erzeugt dieses Programm niemals neue Dateien
- DIRTOUCH arbeitet ausschließlich mit Lokalzeit; keine Weltzeitumrechnungen
- Keine Unterstützung für die unter Windows95 verwendeten Zeiten "Erstellung"
  und "Letzter Zugriff" (bei Dateien).
- Unterstützung für Verzeichnisse auf FAT unter DOS und alles unter Windows9x
- unter DOS ist DOSLFN notwendig für Funktion bei fragmentierten Verzeichnissen
- DIRTOUCH arbeitet nicht rekursiv - hier behelfe man sich mit FOREACH.
- Das Setzen von Datum und Uhrzeit erfolgt stets komplett pro Datei.
  Ist das nicht erwünscht, ist eine FOR-Schleife aufzubauen:
	>for %i in (*.exe) do dirtouch /f %i /g 1.1. %i
  Von allen EXE-Dateien wird nur Tag und Monat auf 1.1. verändert.
  In BATch-Dateien ist das % bekanntermaßen doppelt (%%) zu schreiben!

- Falls diese Hilfe hoffnungslos über den Bildschirm hinweggerollt ist, möge
  man sich doch mal nach MORE oder besser LESS umsehen:
	>dirtouch /h | less
Detected encoding: OEM (CP437)1
Wrong umlauts? - Assume file is ANSI (CP1252) encoded