Das Wichtigste in Kürze

System-Grenzen

Die maximale Dateigröße liegt je nach Befehl bei ca. 10 Millionen Zeilen oder bei 1 GB. Für die Praxis sollten diese Grenzen jenseits von Gut und Böse sein, also nie erreicht werden.

Warten ist nicht bei Hunderten, aber bei (Zig-) Tausenden von Dateien (Rekord: über 170.000 Dateien!) erforderlich (insbesondere beim Kopieren, ich kam auf ca. 1,5 – 2 Min. / GB bei meinem Rechner).

Die Tabellen lassen sich – bis auf die mit den Befehlen – sortieren, und zwar durch einen einfachen Klick auf die Spaltenüberschrift der Spalte, nach der sortiert werden soll. Diese Funktion sollte man aber nur nutzen, solange nicht mehr als etwa 10.000 Zeilen in der Tabelle sind. Bei etwa 10.000 Zeilen legt man das Programm nur für ein paar Minuten lahm, aber danach steigen die Antwortzeiten steil an: Besser nicht ausprobieren! (Ich habe zum Testen mal eine Tabelle mit etwa 40.000 Zeilen sortiert. Das Programm hat dann – scheinbar – für 40 Minuten nichts getan.) Das Sortieren einer Tabelle mit nur ein paar hundert Zeilen erfolgt augenblicklich.

Davon abgesehen, scheint es nach einer Programm-Änderung keine (nennenswerten) Probleme mehr mit den Antwortzeiten zu geben. Im schlimmsten Fall liegen sie im Minutenbereich (Ausnahme: s.u.!), meist aber bei einigen, im Höchstfall bei einigen Dutzend Sekunden. Manchmal geht es so schnell, dass man meint, es sei gar nichts gemacht worden!

Das Durchsuchen eines großen Dateibaums kann aber durchaus einige Minuten in Anspruch nehmen!

Das Backup eines Dateibaumes mit -zig GB kann natürlich noch leicht mehr als ein oder sogar zwei Stunden in Anspruch nehmen!

Leere Dateinamen

Windoof hat Probleme mit leeren Dateinamen. Wenn man z.B. "classpath" als Dateiendung vorgibt, werden Dateien mit dem vollständigen Namen ".classpath" nicht gefunden.

Lösung:

Man wählt "Alle Dateien" nachdem man "Dateiliste laden" ausgewählt hat, dann das Untermenü "Suchbedingung NICHT zutrifft" bei "Zeilen zusätzlich markieren, wenn" unter "Dateiliste".

Dann "Markierte Zeilen entfernen".

Wenn man bei "Zeilen zusätzlich markieren, wenn Suchbedingung NICHT zutrifft" z.B. "classpath" in "Erweiterung (alt)" vorgibt, werden alle Dateien, die eine andere Erweiterung haben als "classpath" markiert und somit entfernt.

Übrig bleiben alle Dateien mit der Erweiterung "classpath", also auch / nur die ".classpath"-Dateien. Entsprechend geht man vor bei ".profile", ".project" usw.

Datumsformat

Das Datumsformat ist Tag.Monat.Jahr Stunde:Minute:Sekunde! Zeit bis zur Sekunde kann man nicht weglassen!

Beispiele:

31.12.2009 23:59:59

oder

1.1.2008 0:0:0

oder

1. 1. 08 0:0:0 (Achtung! Wird als 01.01.1908 00:00:00 interpretiert!)

oder

1. 1. 08 0: 0: 0 (Achtung! Wird als 01.01.1908 00:00:00 interpretiert!)

Nicht zulässig sind "Jan." oder "Januar" statt "1."! Leerzeichen sind zum Teil erlaubt (unzulässig beispielsweise "1 . 1. 2008 0: 0: 0").

Eingeben in / Ändern von einer Zelle einer Tabelle

Tabellenzellen sind teilweise editierbar. Der Cursor wird in einer Tabellenzelle positioniert durch einen Doppelklick.

Anhängen von Zeichenketten

Das Anhängen von Zeichenketten läuft über „Ersetzen auf markierten Dateien“, und zwar ersetzt man alles („(?s)\A.*\z“ = „Flag dotall - Anfang der Eingabe - jedes Zeichen – Ende der Eingabe“) durch alles plus dem neuen Text („$0neuer_Text“). Das dotall-Flag („(?s)“) braucht man natürlich nur auf mehrzeiligen Texten, also z.B. nicht auf dem Verzeichnisnamen oder der Erweiterung. (Es schadet aber auch nicht.) Wichtig: „\A“ und „\Z“ sollte man nicht weglassen, sonst gibt es unerwünschte Effekte. Der neue Text kann (wie der alte, d.h. die Eingabe) selbstverständlich mehrzeilig sein, insbesondere also mit einer Zeilenschaltung beginnen (gibt dann den neuen Text auf einer neuen Zeile).
Beispiel:

Ersetze:

(?s)\A(.*)\Z

durch:

$0
Variable=Wert

ergibt:

alter_Text
Variable=Wert

Eventuell will man vor dem Anhängen eines zusätzlichen Textes etwaige Leerzeilen am Ende des Original-Textes durch keine oder genau eine ersetzen. Das macht man mit dem Suchstring „[\r\n]+\z“ und einem leeren „Ersetze durch“ oder einem, das die gewünschte Anzahl Leerzeilen enthält. Der Suchstring „[\r\n]+\z“ findet natürlich nur etwas, wenn mindestens eine Zeilenschaltung am Ende des Original-Textes steht.
Dateien, die gänzlich ohne Zeilenschaltung enden, selektiert man über „Zeilen zusätzlich markieren, wenn→Suchbedingung zutrifft“ mit der Suchbedingung „[^\r\n]\z“. Dann kann man die fehlende Zeilenschaltung anhängen, indem man „(?s)\A(.*)\z“ ersetzt durch einen (mehrzeiligen) Text, der aus „$1“ plus einer Zeilenschaltung besteht. (Auf diese Weise wird die Zeilenschaltung nur dort ergänzt, wo sie auch fehlt!)

Spalte "Ersetze durch ..." auf der Befehlstabelle

Bei Spalte "Ersetze durch ..." auf der Befehlstabelle sind unter Umständen mehrzeilige Eingaben erforderlich. Das liegt daran, dass aus irgendeinem Grund bei Java® die regexp (regulären Ausdrücke) nicht 100 %ig richtig gehandhabt werden. Theoretisch müsste z.B. „\n“ als (UNIX-) Zeilenschaltung interpretiert werden (nicht nur bei dem Suchstring, sondern auch bei dem "Ersetze durch …"; beim Suchstring funktioniert's!). Das einzige Sonderzeichen ist aber der Backslash („\“) ; der muss esacaped werden durch Voranstellen eines zweiten („\\“).

Ein Workaround ist implementiert: Wenn man auf einem Feld dieser Tabellenspalte CTRL-I (auf deutschen Tastaturen: STRG-I; „I“ für englisch „Input assistance“ = „Eingabehilfe“) eingibt, erscheint eine Eingabe-Hilfe-Maske, die einfach nur ein mehrzeiliges Textfeld (und ein paar Menüpunkte) enthält. Die Daten werden hierzu aus dem Array gelesen, das hinter der Tabelle liegt (und – das ist der Punkt – nicht aus der Tabellenzelle, auf der der Cursor steht, und wo man vielleicht schon Eingaben gemacht hat). Also: bei mehrzeiligen Eingaben unbedingt sofort CTRL-I (auf deutschen Tastaturen: STRG-I) nach dem Anklicken (durch Doppelklick) der Tabellenzelle!

Befehlszeilen

Löschen von Befehlszeilen

Beim Löschen von Befehlszeilen sollte der Cursor nicht auf einer der ersten beiden Spalten stehen.

Kopieren von Befehlszeilen

Beim Kopieren von Befehlszeilen wird immer nur eine Zeile genommen; wenn mehrere markiert sind, die erste (oberste).

Beim Kopieren von Befehlen: Die Kopien landen in einem Stack (Lifo-Speicher, zuletzt Kopiertes wird als Erstes eingefügt)! Mehrere Kopiervorgänge und dann mehrere Einfügevorgänge sind also möglich.

Backup ...

läuft soweit gut, es werden durchnummerierte Zip-Dateien angelegt.

Einziger Nachteil:

Die Zip-Funktionen von Java® sind bis heute nicht ganz kompatibel zu WinZip, 7Zip, Windows XP usw. Dies betrifft alle Einträge, die Nicht-ASCII-Zeichen (Umlaute, Buchstaben mit Akzenten usw.) enthalten. (Nicht-ASCII heißt genaugenommen: Nicht dem amerikanischen Standard-ASCII entsprechend.) Die Dateien lassen sich zwar mit jedem Tool ordnungsgemäß speichern. Wenn man jedoch z.B. eine Zip-Datei mit einem Java®-Programm angelegt hat und sie mit WinZip betrachtet, ist ein Dateiname – beispielsweise mit Umlauten – an den fraglichen Stellen nicht wiederzuerkennen und vor allem: die Datei lässt sich nicht extrahieren!

Deswegen enthält das Programm eine Utility, um mit Java® erzeugte Zip-Dateien zu betrachten und (komprimierte) Dateien zu extrahieren (siehe Zip-Menü).Soweit Zip-Dateien „normal“ angelegt werden (mit WinZip, 7Zip, Windows XP usw.), sollte man sie auch wieder mit einem Nicht-Java®-Tool öffnen und gegebenenfalls extrahieren (wenn man nicht absolut sicher ist, nur die Dateien / Einträge ohne Umlaute u.ä. im vollem Pfadnamen zu brauchen!).

Das Backup läuft immer auf allen Dateien!

Hilfe-Texte

Die Hilfe-Texte sind mit in der Jar-Datei gepackt. Um die Jar-Datei (und damit die Hilfe-Texte) aus dem laufenden Programm heraus zu lokalisieren, musste – weil sich der Name der Jar-Datei nicht irgendwie abfragen lässt – der Name der Jar-Datei zumindest teilweise hart codiert werden. Vorgehensweise ist es, im gesamten Pfad zu der Jar-Datei irgendwo die Zeichenkette „repl“ (die ersten vier Buchstaben von „Replace_WinBatch“) lokalisieren zu können. Der Dateiname kann also frei gewählt werden, sofern sich die Datei in einem Verzeichnis namens „Replace“ befindet. Andererseits ist das Verzeichnis egal, sofern der Dateiname die Zeichenkette „Replace“ enthält. Beispielsweise heißt bei mir im Original die Datei „Replace_WinBatch.jar“, sie kann also in ein beliebiges Verzeichnis kopiert werden und es treten trotzdem keine Probleme mit den Hilfe-Texten auf. Wenn andere Pfade auch irgendwie „Replace“ enthalten, so scheint das nicht zu schaden (im Notfall: nochmal testen!).

Known Bugs / bekannte Fehler

Unter Windows gibt es (rein zufällig ;-) ) einige Probleme mit Verknüpfungen („.lnk“-Dateien).
Beispiel:
Wenn eine Verknüpfung auf ein Verzeichnis existiert, wird diese Verknüpfung nicht als Verzeichnis behandelt (also expandiert), sondern als normale Nicht-Text-Datei behandelt und kann dementsprechend (nur) kopiert werden.
Beim Anzeigen der Datei-Auswahl beim Laden kann man eine Verknüpfung auf ein Verzeichnis jedoch durch einen Doppelklick öffnen. Dann kann man beliebige Dateien aus dem referenzierten Verzeichnis auswählen, speziell „alle“ mit Ctrl- (Strg-) A. Wenn das Verzeichnis wiederum eine Verknüpfung auf ein (anderes) Verzeichnis (usw.) ist, wird es jedoch kompliziert. Man muss allen Verknüpfungen auf andere Verzeichnisse (rekursiv) folgen und den Inhalt der referenzierten Verzeichnisse jeweils (soweit man will) laden!
Für dieses Problem konnte ich leider auch keinen programmtechnischen Workaround finden.
Das Arbeiten mit Verknüpfungen lässt man unter Windoof am besten ganz sein!