55. Datum: 23.05.2010 Grundlagen für ein Contentmananagementsystem per batch anhand des Beispiels Kompozer

Der Sternenhimmelstuermer beschäftigte sich in letzter Zeit mit dem automatisieren von Anwenderprogrammen mit Hilfe von Batchdateien (siehe thunderbirbatch und Mediaplayerbatch).

Die vorerst letzte Abhandlung über diesen Themenkomplex bietet diese Impulsabhandlung über die Erstellung eines kleinen Contentmanagementsystem. Ziel ist es, Kompozer automatisch mit einer selbst erstellten Seite aus einer Batch zu starten, die als Vorlage mit aktuellen Datum und Titel versehen ist (Das sind im Prinzip alles nur Variablen).


Inhaltsangabe

1. Quellcode der Batchdatei - für viele  hört diese Abhandlung dann schon auf
2. Wie erstelle ich eine Batch
    Erklärung des Codes
3. Variablen erstellen mit dem Kommandozeilenbefehl set einschließlich Parameter -p
4. Eine neu Webseite mit aktuellen Datum und Titel erstellen (Vorlage a la cms)
5. Kompozer und Tipp zur I-frame-Bearbeitung
6. Fazit
---------

1. Quellcode der Batchdatei

set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%
set /p data=Bitte Dateiname eingeben:
set /p title=Bitte Titel angeben:
> "D:\homepage\homepage1und1\pctipps\%data%" echo.
>>"D:\homepage\homepage1und1\pctipps\%data%" Echo "<html>"
>>"D:\homepage\homepage1und1\pctipps\%data%" Echo "<head>"
>>"D:\homepage\homepage1und1\pctipps\%data%" Echo "<title> %title% </title>"
>>"D:\homepage\homepage1und1\pctipps\%data%" Echo "</head>"
>>"D:\homepage\homepage1und1\pctipps\%data%" Echo "<body>"
>>"D:\homepage\homepage1und1\pctipps\%data%" Echo "<div>"
>>"D:\homepage\homepage1und1\pctipps\%data%" Echo "<div>"
>>"D:\homepage\homepage1und1\pctipps\%data%" Echo "<h1>Vorlage %date% </h1><br>"
>>"D:\homepage\homepage1und1\pctipps\%data%" Echo "<iframe name="tip_in_a_box""
>>"D:\homepage\homepage1und1\pctipps\%data%" Echo " src="http://www.sternenhimmelstuermer.eu/pctipps/tipverzeichnisw7.html""
>>"D:\homepage\homepage1und1\pctipps\%data%" Echo " height="400" width="800"></iframe>"
>>"D:\homepage\homepage1und1\pctipps\%data%" Echo "</body>"
>>"D:\homepage\homepage1und1\pctipps\%data%" Echo "</html>"
timeout /t 2
start "" D:\Programme\NVU\kompozer-077\kompozer.exe "file:///D:\homepage\homepage1und1\pctipps\%data%"

Anmerkung: Keine Rosen ohne Dornen. Es werden bei dieser Art der Vorlagenerstellung eine Unmenge Anführungszeichen ausgedruckt. Die können z. B. bei Kompozer jedoch mit wenigen Mausklicks (Menü Bearbeiten - Suchen und ersetzen - In Suchen " eintragen und in Ersetzen Leerzeichen bzw. freilassen...).

-----

2. Wie erstelle ich eine Batch

Als erstes ein neues Textdokument erstellen (rechte Maustaste auf Desktop oder in Fensterfläche von Ordner klicken - neu - Textdokument). Die Dateiendung  wird von Hause aus in Windows 7 nicht angezeigt. Der Name, unter dem Sie das Dokument abspeichern, ist so ziemlich egal.
Den o. a. Text, so wie er ist in die Textdatei kopieren (erkennbar an der Endung *.txt -
um sich Endungen anzeigen zu lassen in einem beliebigen Ordner - Organisieren - Layout -
Menüleiste aktivieren und dann in der angezeigten Menüleiste - Extras - Optionen -
Reiterkarte Ansicht : "Erweiterungen bei bekannten Dateitypen ausblenden" deaktivieren).

Danach Die Dateiendung von z. B. probe.txt in probe.bat
Batchdateien werden durch Doppelklick mit linker Maustaste ausgeführt. Die Zeilen werden in der Regel nacheinander abgearbeitet. Weiteres bearbeiten geht über rechte Maustaste und Bearbeiten im Texteditor. Einmal definierte Variablen innerhalb der Ausführung einer Batch merkt sich die Kommandozeile.

------------
 Erklärung des Codes

3. Variablen erstellen mit dem Kommandozeilenbefehl set einschließlich Parameter -p

Set wird in der Windowshilfe ausführlich ausführlich und für Anfänger schwer verständlich erklärt (start - ins Suchfeld cmd.exe eingeben - mit rechter Maustaste anklicken - "als Administrator ausführen" - set /? eingeben und mit Eingabetaste bestätigen. Einmal definierte Variablen innerhalb der Ausführung einer Batch merkt sich die Kommandozeile. Nur so sind auch diese später sinnvoll zu verwenden.

set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%

Hier werden die einzelnen Bestandteile des aktuellen Datums in der Variable %date% gespeichert.

set heißt dabei: Erstelle eine Variable. jahr ist der Name der Variable - Vorsicht: Groß und Kleinschreibung beachten: jahr ist nicht Jahr!  ~-4% Sind die ersten vier Ziffern des Jahres ohne vorherigen Punkt.

~-7,2% Sind die zwei Ziffern des Monats: Das Datum insgesamt hat mit Punkten und Ziffern Zehn Stellen. Ab der 7 Stelle werden 2 Ziffern aus dem Datum übernommen.
~-10,2% bis zur 10 Stelle werden 2 Stellen übernommen. Das ganze negativ von hinten nach vorn....alles ziemlich egal für Sie! Wichtig ist, was hinten dabei raus kommt und das sind drei Variablen des aktuellen Datums ( %date ).

Das Datum ist nun in der Variable %date%, die sich an beliebiger Stelle im <Head></Head> oder <body></body> - Bereich einer HTML-Seite befindet. Keine Ahnung von HTML und Kompozer? - dann hilft diese Abhandlung vom Sternenhimmelstuermer ein wenig weiter.

set /p data=Bitte Dateiname eingeben:
set /p title=Bitte Titel angeben:

set /p Variablenname= - Hier wird die Kommandozeile veranlasst,  durch eine Eingabe vom User im sich öffnenden CMD-Fenster die Variable Variablenname zu definieren. Das geht erst ab Vista und ist eben das besondere an dem Parameter P.

Bitte Dateiname angeben: ist ein beliebiger Text mit einem Doppelpunkt, der nicht ausgedruckt wird und lediglich als Erinnerung für den User benötigt wird.

 -----

4. Eine neu Webseite mit aktuellen Datum und Titel erstellen (Vorlage a la cms)
 
Als nächstes wird die HTML-Seite automatisch erstellt. Eine genaue Erklärung finden Sie hier

01. > "D:\homepage\homepage1und1\pctipps\%data%" echo.
02. >>"D:\homepage\homepage1und1\pctipps\%data%" Echo "<html>"
03. >>"D:\homepage\homepage1und1\pctipps\%data%" Echo "<head>"
04. >>"D:\homepage\homepage1und1\pctipps\%data%" Echo "<title> %title% </title>"
05. >>"D:\homepage\homepage1und1\pctipps\%data%" Echo "</head>"
06. >>"D:\homepage\homepage1und1\pctipps\%data%" Echo "<body>"
07. >>"D:\homepage\homepage1und1\pctipps\%data%" Echo "<div>"
08. >>"D:\homepage\homepage1und1\pctipps\%data%" Echo "<div>"
09. >>"D:\homepage\homepage1und1\pctipps\%data%" Echo "<h1>Vorlage %date% </h1><br>"
10. >>"D:\homepage\homepage1und1\pctipps\%data%" Echo "<iframe name="tip_in_a_box""
11. >>"D:\homepage\homepage1und1\pctipps\%data%" Echo " src="http://www.sternenhimmelstuermer.eu/pctipps/tipverzeichnisw7.html""
12. >>"D:\homepage\homepage1und1\pctipps\%data%" Echo " height="400" width="800"></iframe>"
13. >>"D:\homepage\homepage1und1\pctipps\%data%" Echo "</body>"
14. >>"D:\homepage\homepage1und1\pctipps\%data%" Echo "</html>"

Anmerkung: Sie können natürlich für die Pfade auch Systemvariablen verwenden, die Sie aus dieser Tabelle entnehmen können.

Also, die Zeile 01 erstellt eine neue Datei im o. a. Pfad. Der Name wurde beim Start  der CMD abgefragt (set /p data=Bitte Dateiname eingeben:).
An dieser Stelle musste selbstverständlich der komplette Dateiname mit der Dateiendung .html oder .htm eingegeben werden - sonst funktioniert das nicht.
Zeile 02 -14 ergänzen jeweils die HTML-Seite zeilenweise - dafür ist das Zeichen >> - zum zeilenweisen hinzufügen...

In Zeile 04 wird der Titel zum Anzeigen im Browser angezeigt, der zuvor abgefragt wurde.

In Zeile 09 wird das aktuelle Datum (vom Computer) eingefügt. Das geht natürlich an jedem Ort, also auch unsichtbar im Headbereich.

In Zeile 10 -12 wird ein I-Frame definiert. Kompozer hat so seine Schwierigkeiten mit I-Frames - natürlich hat der Sternenhimmelstuermer auch für dieses Problem eine Lösung.

Anmerkung: Keine Rosen ohne Dornen. Es werden bei dieser Art der Vorlagenerstellung eine Unmenge Anführungszeichen ausgedruckt. Die können z. B. bei Kompozer jedoch mit wenigen Mausklicks (Menü Bearbeiten - Suchen und ersetzen - In Suchen " eintragen und in Ersetzen Leerzeichen bzw. freilassen...).

Zeitverzögerung

Da das Erstellen der HTML-Seite ein paar Sekundenbruchteile dauert, verzögert der Sternenhimmelstuermer den nächsten Befehl um 2 Sekunden. Das geht auch anders, aber da der timeout- Befehl einfach in der W7- Hilfe erklärt ist  (start - ins Suchfeld cmd.exe eingeben - mit rechter Maustaste anklicken - "als Administrator ausführen" - timeout /? eingeben und mit Eingabetaste bestätigen), mal etwas Neues. Der Parameter /t ist für die Zeit in Sekunden.

timeout /t 2

------

5. Kompozer und Tipp zur I-frame-Bearbeitung

start "" D:\Programme\NVU\kompozer-077\kompozer.exe "file:///D:\homepage\homepage1und1\pctipps\%data%"

Das ist der Aufruf für die Seite mit Kompozer für die neu erstellte Vorlage mit Namen %data% (=Vaiable für eine HTM oder HTML-Seite, die vorher in der Batch festgelegt wurde - Sie können natürlich auch eine andere bestehende Seite mit einer Zweizeilenbatch aufrufen:
set /p data=Bitte Dateiname eingeben:
start "" D:\Programme\NVU\kompozer-077\kompozer.exe "file:///D:\homepage\homepage1und1\pctipps\%data%"
Hier würde sich die Eingabeaufforderung öffnen, Sie könnten irgendeineseite.html im o. a. Verzeichnis pctipps der Batch eingeben und mit Eingabetaste bestätigen, worauf die Seite mit Compozer geöffnet wird. Die Pfade müssen Sie selbstverständlich anpassen).

Hinweis: Der Pfad zur kompozer.exe (ausführende Datei von Kompozer) ist bei ihrem PC ein anderer, da der Sternenhimmelstuermer eine portable Version von Kompozer benutzt.

Hm, der angezeigte Name der Registerkarte der HTML-Seite ist erstmal ein falscher Buchstabensalat - aber man kann die Datei bearbeiten und speichern. Die Änderungen werden in der richtigen Datei übernommen.

Das Bearbeiten von Seiten mit einem sogenannten I-Frame in Kompozer ist mit einem kleinen Trick sehr viel einfacher. Laden Sie zuerst in der ersten Registerkarte von Kompozer eine Seite ohne I-Frame. Dann öffnen Sie in einer weiteren Registerkarte die Seite mit I-Frame. Hintergrund der Maßnahme: Kompozer gibt ansonsten die Fehlermeldung heraus, dass die Seite nicht bearbeitet werden kann. Die Trägerseite kann zwar trotzdem bearbeitet werden, aber die Kopierfunktion und andere Menüfunktionen, so wie die Navigation sind eingeschränkt.

Zwar kommt die Fehlermeldung trotzdem (logisch, die I-Frameseite, immer ein absoluter Link, im Internet kann nicht bearbeitet werden), aber ansonsten geht die Kopierfunktion und Navigation problemlos.

-----
6. Fazit

Dieses war wieder einmal eine Impulsabhandlung. Sie können die Batch nun beliebig mit Metaangaben wie content erweitern. Profis können mit if-Schleifen andere Dokumente einfügen. Anfängern empfiehlt der Sternenhimmelstuermer einfach drei Textdokumente zu erstellen und mit einem Copy Befehl zu einer HTML-Seite zusammenzufügen und hinterher mit dem Bearbeitungsprogramm zu öffnen. Fast alle Dateien lassen sich von beliebigen Programmen  nach demselben Schema über die Kommandozeile öffnen (Pfad zur Datei - Leerzeichen und dann zwischen Anführungszeichen den Pfad zur Datei einschließlich Datei und Endung). Sehen Sie dazu auch die Hyperlinks in der Einleitung. Kompozer schlägt da leider etwas aus der Reihe - egal, dafür gibt es ja die Sternenhimmelstuermerhomepage!