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!
Windoof hat Probleme mit leeren Dateinamen. Wenn man z.B. "classpath" als Dateiendung vorgibt, werden Dateien mit dem vollständigen Namen ".classpath" nicht gefunden.
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.
Das Datumsformat ist Tag.Monat.Jahr Stunde:Minute:Sekunde! Zeit bis zur Sekunde kann man nicht weglassen!
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").
Tabellenzellen sind teilweise editierbar. Der Cursor wird in einer Tabellenzelle positioniert durch einen Doppelklick.
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!)
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!
Beim Löschen von Befehlszeilen sollte der Cursor nicht auf einer der ersten beiden Spalten stehen.
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.
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!
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!).
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!