Dokumentation zu RP (Replace) 1.3

Übersicht
Haftungsausschluß
Installation
Programmbeschreibung
Einsatzbeispiele
About...
History/To-Do-List


Übersicht
Haftungsauschluß

Die Benutzung des Programms geschieht auf Ihr eigenes Risiko. Der Autor gibt keine Garantie für irgendeine Funktion des vorliegenden Programms und übernimmt kein Schadensersatz für Operationen, die in Zusammenhang mit diesem Programm aufgetreten sind.

Seitenanfang Kapitelanfang


Übersicht
Installation

Kopieren Sie das Programm in ein Verzeichnis Ihrer Wahl. :-)

Sofern Sie das Programm häufiger benötigen, sollten Sie es in ein Verzeichnis legen, das im Pfad enthalten ist. Damit sparen Sie sich die Eingabe des Pfadnamens.

Seitenanfang Kapitelanfang


Übersicht
Programmbeschreibung
Voraussetzungen
Kommandozeilenparameter
Errorlevel

RP (Replace) ist ein Kommandozeilenprogramm für DOS, das in der Lage ist, ein oder mehrere Vorkommen einer angegebenen Zeichenkette in einer Datei durch eine andere Zeichenkette zu ersetzen. Dabei sind auch binäre Such- und Ersetzungsangaben möglich.

Seitenanfang Kapitelanfang


Übersicht
Programmbeschreibung
Voraussetzungen

Seitenanfang Kapitelanfang
Übersicht
Programmbeschreibung
Kommandozeilenparameter
Such- und Ersatztext
Dateiname
Optionen

Die Syntax lautet:

RP Suche ErsetzeDurch InWelcherDatei

oder etwas präziser:

RP <"Suchtext"> <{"Ersatztext"|DataFilename}> <Dateiname> [Optionen

(Hier und im folgenden sind zwingend erforderliche Angaben in spitze <> Klammern gesetzt, optionale in eckige [] und Mengen in geschweifte {}. Kursiv dargestellte Einträge sind symbolische Bezeichner.)

Die mit Dateiname angegebene Datei wird auf Vorkommen von Suchtext geprüft. Gemäß den Optionen werden dann ein oder mehrere Vorkommen durch Ersatztext ausgetauscht.

Seitenanfang Kapitelanfang


Übersicht
Programmbeschreibung
Kommandozeilenparameter
Such- und Ersatztext

Falls Sie die Daten in der Kommandozeile angeben, müssen Sie die Zeichen in Anführungsstriche setzen.
Das Programm könnte mit maximal insgesamt 255 Zeichen in der Kommandozeile umgehen. Im PSP (Program Prefix Segment) ist allerdings nur Platz für 127 Zeichen. Wenn der Kommandointerpreter ebenfalls nur 127 Zeichen zur Verfügung stellt, reduziert sich die Anzahl der möglichen Zeichen auf 127 - Länge des Programmnamens - 1 Leerzeichen.

Für Sonderzeichen in dieser Zeichenkette gelten folgende Regeln:

Umgebungsvariablen, die in der Zeichenkette angegeben sind, werden expandiert, auch wenn die Umgebungsvariable leer ist. Dann wird eben ein Text mit Null Zeichen Länge eingesetzt.

Beispiel:
»Dies ist ein %test%«
würde in »Dies ist ein Bier« verwandelt, wenn die Umgebungsvariable test den Wert Bier hat. Wäre sie leer, würde der Text in »Dies ist ein«; verwandelt.

Die Expandierung findet nach der Untersuchung auf maskierte Zeichen statt, und auch nur, wenn eine Zeichenkette entdeckt wird, die nicht in maskierte Prozentzeichen gefaßt ist. Dies kann zu scheinbaren Fehlern führen:
Angenommen, die Umgebungsvariable tmp enthalte den Wert c:\tmp\. Was passiert, wenn "%tmp%" expandiert wird? Dann wird daraus "c:\tmp\", und das zweite Anführungszeichen wird als maskiertes behandelt. Somit sieht das Programm beim Parsen der Kommandozeile nur ein Anführungszeichen und bricht mit einer (zutreffenden) Fehlermeldung ab.

Der Sonderfall, daß eine Zeichenkette ausgetauscht werden soll, die von Prozentzeichen umrahmt ist, ist mir noch nicht untergekommen und kann vom Programm nicht durchgeführt werden. Jedenfalls solange nicht, bis es jemand braucht und ich es implementiere.

Seitenanfang Kapitelanfang


Übersicht
Programmbeschreibung
Kommandozeilenparameter
Dateiname

Dateiname gibt den Namen der zu bearbeitenden Datei an. :-)
Joker ('?' oder '*') sind hier nicht erlaubt. Verwenden Sie statt dessen FOR %%I IN (Dateimaske) DO rp "Suchtext" "Ersatztext" %%I [Optionen] (In Batch-Dateien verwenden Sie zwei Prozentzeichen; auf der Kommandozeile dürfen Sie nur ein Prozentzeichen verwenden. Weiteres über den FOR-Befehl entnehmen Sie bitte der Dokumentation Ihres Betriebssystemes:-)

Seitenanfang Kapitelanfang


Übersicht
Programmbeschreibung
Kommandozeilenparameter
Optionen

/i=n
(Index) Ersetze ab dem n-ten Vorkommen, Standard i=1

/c=n
(Count) Anzahl der Ersetzungen. n=0 ersetzt alle Vorkommen (Standard)

/a
(All) auch schreibgeschützte/versteckte/Systemdateien behandeln

/tuNurSo
Die Ersetzungen werden nur simuliert

/v
(Verbose) Geschwätziger Modus

/gk
Gross- und Kleinschreibung wird nicht unterschieden. Erweitert werden die ASCII-Zeichen a..z sowie die Sonderzeichen 129, 132, 134, 130, 147 und 164 des erweiterten IBM-Zeichensatzes, Codepage 850.
n ist in allen Fällen eine 16 Bit breite positive dezimale Ganzzahl. (0 <= n <= 65.535)

Seitenanfang Kapitelanfang


Übersicht
Programmbeschreibung
Errorlevel

Beim Beenden des Programms wird ein definierter ERRORLEVEL gesetzt:Ich werde mich bemühen, bei künftigen Erweiterungen diese Errorcodes unverändert zu lassen.

Seitenanfang Kapitelanfang


Übersicht
Einsatzbeispiele

Vielleicht noch einige Beispiele, wofür ich dieses Programm benutze. :-)

Setzen einer Umgebungsvariablen

Ein häufiges Problem ist es, in der DOS-Umgebung Daten von einem Programm zum anderen zu bekommen, und dann womöglich noch innerhalb von Batches. Dieses Problem löse ich mit RP, indem ich die Ausgabe des einen Programms in eine Datei schreiben lassen, unerwünschte Teile entferne, 'SET UMGEBUNGSVARIABLENNAME=' einfüge, die Datei in *.BAT umbenenne und sie über CALL ausführen lasse.

Ein Beispiel möge das verdeutlichen: Wie bekomme ich das aktuelle Datum in eine Umgebungsvariable?

rem Aktuelles Datum in eine Umgebungsvariable setzen. TMP
rem sollte mit abschließendem \ gesetzt sein.

rem Ausgabe von DATE in eine temporäre Datei schreiben:

echo.|date > %tmp%tmp.bat
rem Die Textdatei sollte man sich mit einem Hexeditor ansehen und entscheiden,
rem welche Zeichen wo entfernt und welche eingefügt werden sollten.

rem Unerwünschte Textteile (auch Zeilenumbrüche) aus der
rem Datei entfernen und 'SET DATUM=' einfügen:

rp "Aktuelles Datum: " "SET DATUM=" %tmp%tmp.bat
rp "\013\010Neues Datum (TT.MM.JJ): \013\013\010" "" %tmp%tmp.bat
rp "," ", den" %tmp%tmp.bat
rem TMP.BAT enthält jetzt einen Text wie
rem "SET DATUM=Mo, den 13.10.1997" plus einen Zeilenumbruch

rem Nun die Umgebungsvariable durch Ausführen von TMP.BAT setzen:

call %tmp%tmp.bat
rem und wech damit:
del %tmp%tmp.bat
rem Kosmetik: noch ein Komma anhängen
set datum=%datum%,
rem Fertig

Ein weiteres Beispiel zeigt, wie die Benutzerkennung in einem MS-LAN-Manager-kompatiblen Netzwerk (also auch der OS/2-LAN-Server) in eine Umgebungsvariable kommt (Netware bietet ja PSTATION für sowas):

rem Wir brauchen NET.EXE und FIND. Außerdem sollte TMP
rem mit abschließendem \ gesetzt sein.

rem Die entsprechende Zeile aus NET CONFIG in eine Datei schreiben:

NET Config | FIND "Benutzerkennung" > %tmp%username.bat
rem Angenommen, die Datei USERNAME.BAT enthalte die folgende Zeile:
rem Benutzerkennung:\008\008MATTHIAS\010\013
rem Dann machen wir mit

RP "Benutzerkennung:\008\008" "set user=" %tmp%username.bat
rem daraus
rem SET USER=MATTHIAS\010\013

rem Schließlich noch ausführen und löschen...voila

call %tmp%username.bat
del %tmp%username.bat

Automatische Rekonfiguration von Schulungsrechnern

Anstatt für jeden Rechner eine Sicherungskopie vorzuhalten, brauche ich jetzt nur noch eine. In dieser sind an den entsprechenden Stellen Platzhalter eingebaut, die durch RP aus Umgebungsvariablen ausgetauscht werden und so die Individualität der Rechner wiederherstellen.
Beispiel: RP "SET STATION=PC000" "SET STATION=PC%pcnr%" C:\CONFIG.SYS
So verfahre ich mit CONFIG.SYS, AUTOEXEC.BAT und diversen Windows-INIs.
Bei Windows 95 ist dieses Verfahren für die Registry ebenfalls verwendbar: Hier halte ich die Registry in Textform vor, verfahre wie oben und wandele anschließend die modifizierte Textdatei REGISTRY.TXT mit
REGEDIT.EXE REGISTRY.TXT
in die binäre Version um. So sehen dann alle Konfigurationen auch nach Jahren der Anfängerbenutzung noch identisch aus. ;-)

Automatisches Anpassen und Verkleinern einer HTML-Datei

Nicht nur das automatische Einfügen von variablen Daten wie des Tagesdatums beispielsweise ist möglich, sondern auch das Verkleinern der Datei. Beispielsweise schrumpft die Größe meines 'handgeschriebenen' Inhaltsverzeichnis des EFT-Servers von 109kB auf 95kB, also immerhin um mehr als 10%. Ich hoffe, meine Web-Besucher werden's mir danken...
Wie geht's? Einfach die beiliegende HTMSMALL.BAT benutzen. Nachfolgend sind einige Routinen aus dieser Batchdatei näher erklärt. (Die HTML-Datei wird nachfolgend »%1« genannt :-)

- Leerzeichen entfernen: Es werden über eine Batch-Schleife mit
----------------------------------------
:nochmal
RP " " " " %1
if errorlevel==1 goto LeerzeichenSindWeg
goto nochmal
----------------------------------------
alle überflüssigen Leerzeichen entfernt (in Browsern werden mehrere Leerzeichen immer als eines dargestellt).

- Unix-Zeilenumbruch (ein Zeichen anstatt zwei) wird mit »rp "\013\010" "\013" %1« erzeugt,

- leere Zeilen werden entfernt:
----------------------------------
:ZeileNochmal
rp "\013\013" "\013" %1
if ERRORLEVEL==1 goto ZeileIstWech
goto ZeileNochmal
----------------------------------

- Sonderzeichenkonvertierung mit
RP "ü" "ü" %1
RP "Ü" "Ü" %1
usw., wobei Probleme mit den verschiedenen Zeichensätzen von DOS und Windows auftreten können. Einfacher ist es dann, das Zeichen über seinen Code zu maskieren, also z.B. '\xFC' für 'ü'.

- Bearbeitungsdatum setzen:
In fast jeder HTML-Datei befindet sich sowas wie "Zuletzt überarbeitet am ...".
Bei mir steht dort "Zuletzt bearbeitet am <!--AKTUELLES TAGESDATUM-->.", wobei dann "" mittels »RP "<!--AKTUELLES TAGESDATUM-->" "%datum%" %1 durch das aktuelle Datum ausgetauscht wird (siehe auch Beispiel oben).

Seitenanfang Kapitelanfang


Übersicht
About...
Sharewarehinweise
Lizenzierung
Bestellung

Programmautor

Bugreports und Verbesserungsvorschläge senden Sie bitte an:

Leitseite MSDatec

FirmeninfosWer und Was
Komplettsysteme und KomponentenKomplettsysteme
und Komponenten
Entwicklung, Produktion, InstallationEntwicklung,
Produktion,
Installation
SystembetreuungSystembetreuung
SeminareSeminare

Matthias Stolte Datentechnik (MSDatec)

Systembetreuung, Seminare, EDV- und Telekommunikationslösungen

Kommunikationsverbindungen:


aktuellste Version

Die aktuellste Version dieses Programms erhalten Sie aus der MSD-Box oder aus dem Internet unter http://www.msdatec.de/download.htm.

Seitenanfang Kapitelanfang


Übersicht
About...
Sharewarehinweise

Was ist Shareware?
Shareware bedeutet, daß Sie das Programm vor dem Kauf ausprobieren und entscheiden können, ob es Ihren Anforderungen genügt.

Wie lange darf ich es denn "ausprobieren"?
Bis zu dem Zeitpunkt, ab dem Sie das Programm einsetzen, ohne darüber nachdenken, ob es die Problemstellung auch wirklich löst. Dies können drei oder vier oder auch dreißig Tage sein.
Sharewareautoren (und damit auch ich :-) vertrauen dabei auf die Ehrlichkeit des Anwenders.

Ich setze das Programm nur gelegentlich ein. Dafür muß ich doch wohl nicht bezahlen?
Angenommen, Sie möchten ein Bild aufhängen, haben aber keinen Hammer für den Nagel. Dann gehen Sie in das nächste Geschäft und sagen: "Den Hammer brauche ich nur gelegentlich. Darf ich ihn umsonst haben?" :-)
Nein, die Häufigkeit der Nutzung steht in keinerlei Zusammenhang mit der Registrierung eines Programms.

Darf ich das Sharewareprogramm weitergeben?
Sie dürfen das Sharewareprogramm an Dritte weitergeben, aber nur, wenn keine Änderungen der im Paket enthaltenen Daten erfolgte. Bitte behalten Sie bei der Weitergabe die Namensgebung für das Archiv bei.

Was ist denn bei der registrierten Version anders?
Das eigene Gewissen. ;-)
Nein, der einzige technische Unterschied besteht bei diesem Programm darin, daß die manuelle Bestätigung beim Programmstart entfällt, die echten Batchbetrieb verhindert.
Desweiteren erhalten Sie Unterstützung bei technischen Problemen in Zusammenhang mit diesem Programm sowie kostenlos fehlerbereinigte Versionen mit derselben Hauptversionsnummer UUDecoded per eMail (d.h. wenn Sie beispielsweise die Version 2.0 beziehen, erhalten Sie kostenlos und unaufgefordert per eMail die jeweils aktualisierte Version 2.x).

Wie kann ich eine lizenzierte Version erhalten?
Blättern Sie nach unten. :-)

Seitenanfang Kapitelanfang


Übersicht
About...
Lizenzierung

n²-Lizenzierung
Lizenz-
anzahl
gleichzeitig
benutzbar
11
24
39
416
usf.

Beachten Sie bitte, daß das Programm lizenzrechtlich wie ein Buch behandelt wird: Es darf auf mehreren Maschinen installiert sein und von mehreren Personen benutzt werden, jedoch nicht gleichzeitig. Wenn das Programm zur gleichen Zeit mehrfach benutzt wird, benötigen Sie auch mehrere Lizenzen.
Dabei gilt die n²-Lizenzierung, d.h. daß sich die Anzahl der gleichzeitig verwendbaren Programmkopien aus dem Quadrat der erworbenen Lizenzen ergibt.

Seitenanfang Kapitelanfang


Übersicht
About...
Bestellung

Mit dem nachfolgenden Online-Formular, bei dem die Daten als eMail übermittelt werden, können Sie das Programm oder weitere Lizenzen bestellen. Wenn Sie Javascript in Ihrem Browser aktiviert haben, werden die Summen automatisch berechnet.
(Sollte die Bestellung mit diesem Formular nicht durchführbar sein {z.B. mit dem Microsoft Internet-Explorer}, können Sie auch das Textformular
RPReg07.txt verwenden.)

Ja, bitte senden Sie mir...

1 aktuelle Vollversion des Programms REPLACE zu 19,95 DM DM
weitere Lizenz(en) gemäß der n²-Nutzungsregelung zu je 19,95 DM DM
per Email0,00 DM
per Post auf 3,5"-Diskette (+3,00 DM) DM
ja, ich möchte eine Rechnung mit ausgewiesener MWSt. (+3,00 DM) DM

Summe: DM

Alle Preise verstehen sich inclusive MWSt.

Den Gesamtbetrag von DM habe ich
überwiesen auf das Konto von Matthias Stolte Datentechnik, Nr. 41508078 bei der Sparkasse Bielefeld, BLZ 480 501 61. Meinen Namen habe ich auf dem Überweisungsformular vermerkt.
als Verrechungsscheck geschickt an: Matthias Stolte Datentechnik, 33613 Bielefeld, Albert-Schweitzer-Straße 4, Deutschland.
Anrede:Vorname:Nachname:
Firma:Abteilung:
PLZ:Ort:Staat:
Straße:
Telefon:Fax:E-Mail:
weiteres:

Seitenanfang Kapitelanfang
Übersicht
History

History

Version 1.0
  • Release: 09.03.97, Zeitstempel 01:00
  • Größe: Vollversion: 27.088 Bytes, Shareware-Version: 29.088 Bytes
Version 1.1
  • Release: am 14.03.1997, Zeitstempel 01:01
  • Größe: Vollversion 27.712 Bytes, Sharewareversion 28.624 Bytes
  • Änderungen: keine
  • Zusätze: Option -gk (Groß- und Kleinschreibung ignorieren) eingebaut
Version 1.2
  • Release: 22.06.97, Zeitstempel 01:02
  • Größe: Vollversion: 31.648 Bytes, Shareware-Version: 32.544 Bytes
  • Änderungen
    • Kommandozeilen-Parsing jetzt durch allgemeines Modul
    • Neue DELAY-Routine verwendet
    • Kommandozeilenschalter-Einleitung von '-' in '/' geändert
  • Bugfixes
    • "\\" gegenüber "\\\"" wird jetzt im Suchtext und Ersatztext richtig behandelt.
    • Begrenzende Leerzeichen in Suchtext und Ersatztext werden jetzt erkannt.
    • Fehler (Feature?) in PARAMSTR() durch Einsatz eigener Kopierroutine von PSP:80h beseitigt.
Version 1.2.1
  • Release: 02.07.97, Zeitstempel 01:21
  • Größe: Vollversion: 34.144 Bytes, Shareware-Version: 35.072 Bytes
  • Änderungen:
    • Peinlichen Bug beseitigt: für Version 1.2 hatte ich zum Prüfen den Teil des Programms auskommentiert, der die Änderungen tatsächlich durchführt... Nu geht's aber wieder. :-)
    • n²-Lizenz eingeführt
    • Parameter '/?' ermöglicht
    • Nun wird auch wieder ein richtiger temporärer Dateiname verwendet.
Version 1.2.2
  • Release: 07.08.97, Zeitstempel 01:22
  • Größe: Vollversion: 32.800 Bytes, Shareware-Version: 33.072 Bytes
  • Änderungen:
    • lästige Wartezeit bei der Shareware-Version entfernt
    • Dokumentation strukturiert und erweitert, kleine Änderungen in REGISTER.TXT durchgeführt
  • Erweiterungen:
    • Prüfung auf (unzulässige) Joker '?' und '*' im Dateinamen eingebaut
    • Falls die Verbose-Option nicht gesetzt ist, wird jetzt eine Fortschrittsanzeige nach jedem Lesevorgang/Auffinden angezeigt. Nicht, daß der geneigte Benutzer denke, das Programm sei gestorben... :-)
    • HTMSMALL.BAT zum Paket dazugelegt, HTMSMALL.REG für die Windows 95-Freunde...
  • Bugfixes:
    • bislang keine Bugs in V1.21 gefunden...
Version 1.3
  • (noch nicht offiziell freigegeben)
  • (noch nicht offiziell freigegeben)
  • Änderungen:
    • Dokumentation umgestellt auf HTML-Format.
    • REGISTER.TXT heißt jetzt RPReg07.txt
    • Ersatztext wird jetzt intern nicht mehr als string behandelt, sondern als Zeiger. Daher kann Ersatztext jetzt bis zu 65520 Zeichen aufnehmen.
    • Das Einsetzen von Umgebungsvariablen in den Such- und Ersatztext findet jetzt nach dem Austausch der maskierten Zeichen statt.
    • Da RP auf Netzlaufwerken bei größeren Dateien furchtbar lange brauchte, habe ich das Dateihandling innerhalb von RP verbessert, die zugrundeliegenden IO-Routinen überarbeitet und eine Pufferung eingebaut.
  • Erweiterungen:
    • Beim Programmabbruch durch einen DOS-Fehler wird jetzt anstelle der lapidaren Meldung 'DOS-Fehler' der entsprechende DOS-Fehlertext angezeigt.
    • Die Callback-Funktion der Fortschrittsanzeige prüft jetzt auf ESC.
    • HTMSMALL.BAT prüft jetzt vorsichtshalber nochmal auf <PRE>-Tags, bevor es loslegt.
    • Ersatztext kann jetzt auch aus einer Datei gelesen werden.
  • Bugfixes:
    • Einige kleinere Bugs in der Zeichenketten-Funktionsbibliothek korrigiert.
    • Austausch-Funktion für maskierte Zeichen nochmals überarbeitet. Jetzt können auch Prozentzeichen maskiert werden, um einen Austausch durch Umgebungsvariablen zu verhindern.

To-do-List

Seitenanfang Kapitelanfang

Letzter Update: 06.03.2000