Batch Script Sammlung

Posted by quark007 | Posted in Computer & IT, Programmieren / Coden | Posted on 06-05-2016-05-2008

1

Wie oft ist es schon vorgekommen, dass ich einfach schnell z.B. alle Dateien in einem Ordner als Text-File versenden wollte. Dann fängt jedes mal die Suche nach dem richtigen Skript wieder von vorne an. Daher möchte ich hier eine kleine Sammlung aller meiner verwendeten Scripte anlegen. Vielleicht hilft es ja auch dem ein oder anderen weiter.

Dateien eines Ordner als Text-File [source]

dir /a /b /-p /o:gen >filelist.txt

USB-Scans umbenennen (rekursiv) (Datum+Uhrzeit)

@echo off
FOR /r %%V IN (*.pdf) DO FOR /F "tokens=1-5 delims=./: " %%J IN ("%%~tV") DO IF EXIST "%%L-%%K-%%J %%M-%%N%%~xV" (ECHO rename "%%V" "%%L-%%K-%%J %%M-%%N_1%%~xV" & rename "%%V" "%%L-%%K-%%J %%M-%%N%%~xV") ELSE (rename "%%V" "%%L-%%K-%%J %%M-%%N%%~xV")
pause

 

Bildschirmhelligkeit festlegen Win10DE (hier für EN)

@echo OFF
for /f "tokens=*" %%i in ('powercfg -q ^| find "GUID des Energieschemas"') do set pwrSchm=%%i
set pwrSchm=%pwrSchm:~25,38%

for /f "tokens=*" %%i in ('powercfg -q ^| find "(Bildschirm)"') do set dsply=%%i
set dsply=%dsply:~22,36%

for /f "tokens=*" %%i in ('powercfg -q ^| find "(Bildschirmhelligkeit)"') do set brtnss=%%i
set brtnss=%brtnss:~29,37%

Echo Bildschirmhelligkeit von 0-100% eingeben
set /P brightness= % brightness:  %=%

powercfg -SetDcValueIndex %pwrSchm% %dsply% %brtnss% %brightness%
powercfg -S %pwrSchm%

Aktuell wird der zu setztende Wert abgefragt. Soll es jedoch ein fester Wert sein, dann in der Zeile “set /P brightness=” alles dahinter löschen und einen fixen Prozentwert 0-100 einsetzen

ICS Kalender in Owncloud importieren

Posted by quark007 | Posted in Programmieren / Coden | Posted on 01-01-2016-05-2008

0

Wer einmal mit Owncloud angefangen wird davon vermutlich nicht mehr loskommen. Doch einige Punkte sind noch nicht optimal gelöst bzw. für bestimmte Anforderungen gibt es noch keine OutOfTheBox Lösung. Dazu gehört auch das importieren von KalenderFeeds. In meinem Fall sind das z.B. Abfuhrtermine für Haushaltsmüll oder aber Sportveranstaltungen am Wochenende.

Mit PHP-Skripten habe ich mir bereits aus den Internetseiten die Daten für eine ICS-File extrahiert und daraus eine konforme ics-datei erzeugt. Dies geschieht bei jedem Aufruf des Scripts automatisch. Ein Beispiel, das die Spieltermine der Badmintonabteilung des TSV Lauf 1 aufbereitet (bereits ausgetragene Spiele werden dabei herausgefiltert):

<?php
    $ch = curl_init();
    $URL = "http://www.alleturniere.de/sport/drawmatches.aspx?id=5892ECDD-1447-4D3B-ABF2-99A596D92E79&draw=1";
    
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    //Set the URL
    curl_setopt($ch, CURLOPT_URL, $URL);
    //Execute the fetch
    $data = curl_exec($ch);
    //Close the connection
    curl_close($ch);

    
    $position = strpos($data,'<table class="ruler matches">');
    $text_new = substr($data,$position);
    $ics_data = array("BEGIN:VCALENDAR\r\nVERSION:2.0\r\nMETHOD:PUBLISH\r\nPRODID:-//ABC Corporation//NONSGML My Product//EN\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/Berlin\r\nBEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:PDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:PST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD\r\nEND:VTIMEZONE\r\n"); //SammelArray für ICS-Einträge
    
    if(preg_match_all('~<tr>(.*)<\/tr>~isU', trim($text_new), $matches)) {
        foreach($matches[0] as $array) {
            if(preg_match('~<td class="plannedtime" align="right">([A-Za-z]{2}) ([0-9]{2}).([0-9]{2}).([0-9]{4}) <span class="time">([0-9]{2}):([0-9]{2}){1}</span><\/td><td align="right">[0-9]{1,2}<\/td><td align="right">[H|R]<\/td><td>[0-9]{1,2}<\/td><td class="nowrap" align="right">(.*)<a class(.*)>(.*)<\/a>(.*)<\/td><td align="center">\-<\/td><td class="nowrap">(.*)<a class(.*)>(.*)</a>(.*)<\/td><td>(.*)<\/td><td><a href(.*)>(.*)<\/a><\/td>~',$array,$splits)) {
                if(preg_match('~(TSV Lauf)~is',$splits[9].$splits[13]) AND $splits[15] == "") {
                    $ics_data[] = "BEGIN:VEVENT\r\nDTSTART;TZID=Europe/Berlin:".$splits[4].$splits[3].$splits[2]."T".$splits[5].$splits[6]."00\r\nDTEND;TZID=Europe/Berlin:".$splits[4].$splits[3].$splits[2]."T".($splits[5]+3).$splits[6]."00\r\nLOCATION:".str_replace(",","\,",$splits[17])."\r\nCATEGORIES:Sport\r\nTRANSP: OPAQUE\r\nSEQUENCE:0\r\nUID:\r\nDTSTAMP:".date("Ymd\THis\Z")."\r\nSUMMARY:Badmintonspiel ".$splits[9]." - ".$splits[13]."\r\nDESCRIPTION: \r\nPRIORITY:1\r\nCLASS:PUBLIC\r\nBEGIN:VALARM\r\nRIGGER:-PT10080M\r\nACTION:DISPLAY\r\nDESCRIPTION:Reminder\r\nEND:VALARM\r\nEND:VEVENT\r\n";
                }
            }
        }
    }
foreach($ics_data AS $date) {
    print($date);
} echo "END:VCALENDAR";
?>

Read the rest of this entry »

Xampp Portable mit getrennter Datenablage

Posted by quark007 | Posted in Computer & IT, Programmieren / Coden | Posted on 01-09-2015-05-2008

0

Um auch auf Reisen an meinen PHP-JS-Skripten arbeiten zu können, habe ich mir einen USB-Stick mit TrueCrypt-Container angelegt. In den Container möchte ich aber nicht XAMPP selber packen (auch wegen Performance Gründen), sondern lediglich die Daten. Also habe ich mir die XAMPP-Portable-Version (minimal) herunter geladen und auf den USB-Stick installiert. Ebenso TrueCrypt und einen Container gesichert mit PW und Key-File in den ich www- und mysql-Daten in Unterordner gepackt habe.

Anschließend muss man noch in der XAMPP Config (bei mir speziell MySQL und Apache) die Pfad-Variablen anpassen.

Beim Apache ist das bei mir recht unkompliziert mit einer Änderung der Datei …/xampp/apache/conf/httpd.conf. Dabei tauscht man den Pfad in folgenden Zeilen aus:

DocumentRoot "/xampp/htdocs"
<Directory "/xampp/htdocs">

Bei MySQL sollte es auch nicht komplizierter sein. Man kopiert sich den mysql/data/ Ordner oder dessen Inhalt in einen Ordner in dem gemounteten Container. Anschließend muss man die Daten in …/xampp/mysql/bin/my.ini anpassen.

Wichtig ist dabei folgende Zeilen upzudaten:

innodb_log_group_home_dir = "X:/mysql_data"
innodb_data_home_dir = "X:/mysql_data"
datadir = "X:/mysql_data"

Eigentlich sollte es dann schon funtionieren, doch bei mir hat er den Start immer abgebrochen. In Blick in die mysql_error.log ergab folgenden Fehler, der dafür verantwortlich war:

2015-09-01 18:43:17 [...]  InnoDB: Error: unable to create temporary file; errno: 2

Ein wenig stöbern im Internet hat mich zu diesem Post auf stackexchange geführt. Darin wird erwähnt, dass es zielführend sein kann, den Temp-Ordner auf den Windows-Temp Ordner zu legen. Dazu passt man folgenden Wert in der my.ini an:

tmpdir = "C:/Windows/Temp"

Damit läuft bei mir nun alles so wie gewünscht. Vielleicht hilft es ja auch dem ein oder anderen von euch.

RaspberryPi startet nicht mehr nach Underclocking

Posted by quark007 | Posted in Computer & IT, Programmieren / Coden | Posted on 15-06-2015-05-2008

0

Im Zuge der Installation einer neuen Wetterstation, die mit einem RaspberryPi B+ ausgelesen wird, bin ich auf ein Problem gestoßen, das ich erst nach mehrmaligem neuen Aufsetzen gelöst bekommen habe.

Das RaspberryPi habe ich mit Debian Wheezy aufgesetzt und weewx installiert. Die Station habe ich über USB angeschlossen und sie wurde auch sofort erkannt und abgefragt. Anschließend habe ich alles so eingerichtet wie es sein sollte und auch einen Skin übersetzt (Dazu mehr in einem weiteren Beitrag). Da das Pi dabei kaum etwas zu tun hat, überlegte ich mir es herunterzutakten.

Dafür findet man im Internet Anleitungen zu Hauf, z.B. diese hier (erste bei der google-Suche). Darin wird beschrieben, wie man die /boot/config.txt anpassen muss. Es sollen folgende Zeilen ergänzt bzw. geändert werden:

 arm_freq=700
 arm_freq_min=100
 core_freq=250
 core_freq_min=75
 sdram_freq=400
 over_voltage=0

Das habe ich auch ganz vorbildlich gemacht, doch nach einem reboot konnte ich nicht mehr auf mein RasPi zugreifen. Es wurde auch im Netzwerk nicht gefunden. Selbst bei Anschluss von Tastatur und Bildschirm blieb alles tot. Zunächst dachte ich, ich hätte in der /etc/network/interfaces etwas falsches eingetragen und habe die SD-Karte neu aufgesetzt. Doch beim nächsten mal das gleiche.

Da ich dachte, es könnte an der Netzwerkkonfiguration liegen, habe ich mir ein Live-Linux auf einen Stick gepackt und gestartet, um die SD-Karte mounten zu können. Doch die Konfiguration schien in Ordnung. Dann wollte ich die Änderungen in der /boot/config.txt rückgängig machen, doch unter dem Linux schien der Ordner leer. Ich habe aufgegeben und Windows gestartet. Im Windows wurde die boot-Partition aber erkannt und dort habe ich auch die config.txt gefunden. ALs ich die Änderungen rückgängig machte, startete das RasPi wieder ganz normal, als wäre nichts gewesen.

Mein Tipp daher: das underclocking sollte man besser lassen. In vielen Foren wir darauf verwiesen, dass der Lan-Chip das eigentliche Leistungsmonster ist. Das Underclocking würde sowohl was Wärme als auch Stromverbrauch angeht, kaum etwas bewirken. Wenn ich Zeit habe, werde ich das einmal nachprüfen, sofern es bei mir doch funktionieren sollte.

Homeserver Update Problem

Posted by quark007 | Posted in Computer & IT, Programmieren / Coden | Posted on 09-06-2015-05-2008

0

Da ich es nicht lassen kann und immer wieder am rumspielen und ausprobieren bin, ist mir heute etwas komisches passiert. Nun aber nach einander.

Postfix als Relay-Server einrichten

Ich habe den Postfix Mail-Relay eingerichtet (das hatte bei mir lange nicht funktioniert). Nach dieser Anleitung bin ich vorgegangen und habe alles korrekt eingerichtet. Da ich das ganze über meinen Posteo-Account laufen lassen wollte habe ich folgende Werte angegeben:

Hostname: ServerName [Bei mir war dabei wichtig, dass es eine öffentlich registrierte Internetdomain ist. Sonst gab es einen Fehler]
SMTP-Relay: "[posteo.de]:587"

In der main.cf habe ich diese vorgegebenen Werte ergänzt und die vorigen Eingaben kontrolliert.

Die Datei /etc/postfix/sasl_password mit dem korrekten Inhalt wird mit folgendem Befehl erstellt:

sudo echo "posteo.de [Benutzername]@posteo.de:[Passwort]" > /etc/postfix/sasl_password

Nachdem ich dann den Postfix-Server neugestartet hatte, konnte ich wirklich Mails versenden und die kamen auch an. Ohne das “@posteo.de” im Benutzernamen gab es einen Authentifizierungsfehler. Wurde lediglich posteo.de als Relayserver angegeben, wurde mir der Zugriff verweigert.

Unbekannter Fehler mit falscher Lösung

Mein Smartphone besser gesagt DavDroid meldete auf einmal, dass es ein Synchronisationsproblem gegeben habe. Also den Sync nochmal neu gestartet, aber die Meldung kam wieder. Also versucht mich in OwnCloud einzuloggen: 403 Fehler beim Laden der Seite. Naja dachte ich mir, schau ich mir halt mal nginx-Config an. Sah alles normal aus und auch ein Neustart von nginx hat nichts gebracht.

Da mir im Openmediavault Forum schon einmal sehr weiter holfen wurde und ich erfahren habe, dass der Befehl

sudo apt-get install --reinstall openmediavault

meine Konfiguration beibehält aber Fehler dennoch beseitigen konnte (damals ein Fehler mit nicht mehr auffindbarer env.conf), habe ich diesen Befehl einfach mal ausgeführt. Doch das verschlimmerte alles nur. Meine Plugins (Nginx, Mysql, OMVextras etc.) waren alle weg. Ich habe den Server dann erstmal neu gestartet in der Hoffnung, dass er beim Start die Konfig-Dateien vielleicht doch findet und wieder einbindet, aber war nix. Zu allem Überfluss konnte ich mich auch per SSH nicht mehr einloggen und auch die SMB-Shares waren nicht erreichbar. Die Services waren gestartet, aber das Symbol dafür war rot, also lag ein Fehler vor. Aber welcher?

Das weiß ich bis eben auch noch nicht. Ein ändern der Konfiguration, deaktivieren, speichern und wieder neu aktivieren hat das Problem dann aber beseitigt.

Also habe ich alle Plugins wieder installiert und eingerichtet (was ein act, wenn man die Konsole gewöhnt ist und sich jetzt im Webinterface zurecht finden muss). Dabei ist mir aufgefallen, dass in der Menüleiste ein Feld für das Owncloud-Interface ist. Da ich mein OwnCloud aber manuell in einem Server installiert habe brauche ich das nicht. Read the rest of this entry »

Lilypond: Notenblättchen selbstgemacht

Posted by quark007 | Posted in Computer & IT, Programmieren / Coden | Posted on 19-05-2015-05-2008

8

Für unsere Hochzeit habe ich ein Programm gesucht, mit dem ich die Liedzettel selber machen kann. Im Internet findet man zwar viele Lieder als Bild, aber nie alle in gleicher Schriftart und -größe. Bei der Suche bin ich dann auf Lilypond gestoßen, ein unter GNU GPL stehendes OpenSource Projekt, dass sich das erstellen von Liedblättern, Kompositionen und ganzer Partituren auf die Fahne schreibt.

Es ist ähnlich angelegt wie LaTeX mit Befehlen und einer reinen Texteingabe. Erst durch das Kompilieren in PDF, PNG und/oder Midi kann man das Ergebnis betrachten. Zur einfacheren Handhabung habe ich mich für den Frescobaldi-Editor entschieden. Dieser bietet das für mich wichtige Feature, direkt neben der Texteingabe die kompilierte Ausgabedatei anzuzeigen. Zudem springt er bei Klick auf eine Note an die korrekte Stelle im Quelltext.

Da das Liedblatt bei uns in Din A5 gedruckt werden soll, hat es bei mir nicht funktioniert alle Stücke in einem PDF auszugeben. Die Aufteilung auf die Seiten war mir einfach nicht sauber genug. Also habe ich alle Stücke einzeln kompiliert und mit PDF Split And Merge Basic zusammengefügt, zumal noch Deckblatt, Leerseiten und eine Anfahrtsskizze hinzu kommen mussten.

Beim Erstellen der Stücke sind mir eine Dinge in die Quere gekommen, die ich hier erklären und ausräumen will.

1. Mich hat die Einrückung der ersten Notenzeile zu Beginn des Stückes gestört. Um dies abzustellen, muss in den \layout-Block die folgende Zeile hinzugefügt werden:

\layout {
  indent = #0
}

Wenn man die Einrückung erhöhen will, erhöht man einfach den Wert 0 auf einen passenden >0

2. Außerdem war auf jeder letzten kompilierten Seite ein Hinweis auf das Lilypond Projekt. Dieser Hinweis wäre auf jeder meiner Seiten aufgetaucht, was ich für nicht erträglich erachte. Abhilft bringt folgender Code:

\paper {
  oddFooterMarkup = \markup{ \fill-line{ \line{" "} } }
}

Aus Rücksicht auf das Projekt, sollte man aber an das Ende des gesamten Heftes den Hinweis anfügen. Bekanntheit ist für solche Projekte äußerst wichtig.

3. Bei einem Stück kam es vor, dass eine einzelne Zeile auf eine weitere Seite geschoben wurde. Das ist für einen Liedzettel aber äußerst unpraktisch. Ich habe daher folgenden Code gefunden, der den Abstand der Notenzeilen ändert. Mit den Werten muss man etwas spielen, gerade wenn noch Liedtext unter den Noten vorhanden ist. Bei mir haben die folgenden Zeilen geholfen:

\paper {
  system-system-spacing = #'((padding . 0.5) (basic-distance . 0.5))
}

Damit konnte ich ein wenig mehr Platz gewinnen und so das Lied auf eine Seite gebracht.

4. Wenn mehrere \score Umgebungen auf eine Seite gebracht werden sollen, werden sie automatisch so angeordnet, dass es (angeblich) am Besten aussieht. Das Auseinanderziehen von Liedzeilen empfinde ich aber als nicht schön. Mit den Anweisungen:

\paper {
  ragged-last-bottom = ##f
  ragged-bottom = ##f
}

wird das Einhängen des Inhalts am Seitenende deaktiviert und somit wieder von oben gestapelt angezeigt.

5. Außerdem  haben mich die Seitenzahlen gestört. Diese ließen sich mit folgender Funktion deaktivieren:

\paper {
  print-page-number = ##f
}

Read the rest of this entry »

Mozilla Firefox Sync mit OwnCloud realisieren

Posted by quark007 | Posted in Computer & IT, Programmieren / Coden | Posted on 22-04-2015-05-2008

4

Nachdem die Installation von OwnCloud auf OMV ganz gut geklappt hat, war ich auf der Suche nach neuen Möglichkeiten der Integration. Dabei bin ich auf das MozillaSync Plugin gestoßen.

05-05 WordPress Mozilla_Sync8 05-05 WordPress Mozilla_Sync9Die Installation war genauso einfach wie bei jedem anderen Plugin auch:
über SSH einloggen, in den Addons-Ordner wechseln, mit wget das Archiv laden und in den selben Ordner entpacken.
Dann im OwnCloud Webinterface als Admin das Plugin noch aktivieren. anschließen in die persönlichen Einstellungen gehen und ganz unten für MozillaSync eine E-Mail-Adresse eingeben. Diese wird für die Anmeldung später benötigt. Dabei kann man sich auch gleich die SyncServer-URL kopieren.

Als ich im Firefox nun Sync einrichten wollte, habe ich aber keine Möglichkeit gefunden einen eigenen Sync-Server auszuwählen. Nach einigem Suchen bin ich auf einen Kommentar zu dem Plugin gestoßen. Darin wurde folgendes Vorgehen beschrieben:

1. Im Firefox die URL about:config aufrufen
05-05 WordPress Mozilla_Sync2
2. Dort mit Rechtsklick -> Neu einen neuen String mit dem Namen services.sync.username erstellen und einen x-beliebigen Wert zuweisen. Sollte die Variable schon gesetzt sein, kann der Schritt übersprungen werden.
05-05 WordPress Mozilla_Sync1
3. Im Suchfeld nach dem Wert services.sync.tokenServerURI suchen. Dort muss die OwnCloud-MozillaSync Adresse eingegeben werden.
4. Den Firefox einmal neu starten.
05-05 WordPress Mozilla_Sync3
5. Nun in den Einstellungen auf den Reiter “Sync” gehen und anschließend “Sync einrichten” anklicken.
05-05 WordPress Mozilla_Sync4
6. Als nächstes muss man entscheiden ob man ein neues Gerät zu einem bestehenden Account hinzufügen oder einen neuen Account anlegen will. Ich habe schon einen Account eingerichtet, daher werde ich nur einen neuen Sync-Client hinzufügen.
05-05 WordPress Mozilla_Sync5
6. Da ich mein Gerät nicht bei mir habe, meine Daten aber in meiner auf allen Geräten zugänglichen KeePass-DB gespeichert habe, wähle ich Ich habe mein Gerät nicht bei mir
05-05 WordPress Mozilla_Sync7
7. Im sich nun öffnenden Fenster gibt man die zuvor eingegebene E-Mail-Adresse (im Bsp. name@provider.de) sowie das zu dem OwnCloud Account passende Kennwort ein. Bei Server wählt man “manuell” aus und gibt die vorhin kopierte MozillaSync URL ein (in meinem Fall https://oc.omv/remote.php/mozilla_sync/).
Zudem braucht man noch den Wiederherstellungsschlüssel, den man sich auf dem bereits eingerichteten Gerät ebenfalls über die Einstellungen -> Sync im Auswahlmenü anzeigenlassen kann.
Tipp: alle benötigten Daten entweder in einer extra TXT-Datei oder im Keepass Container zusammen abspeichern. Bei der Sync-Einrichtung ist der Firefox ansonsten leider nicht bedienbar.
8. Anschließend nur noch auf “Weiter” klicken und schon beginnt die erste Synchronisierung.

Ein wenig Aufwand der sich lohnt, zumal ich Daten wir Passwörter und Login-Namen nie in fremde Hände geben würde.

Leider habe ich noch keine Möglichkeit gefunden auch den Firefox unter Android damit zu synchronisieren, doch mit dem Fennec Browser ist es angeblich möglich.

Viel lieber wäre mir aber die Synchronisation mit dem OwnCloud Plugin Bookmarks. Es gibt zwar eine App, die damit synchronisiert, aber nur in die App selber und nicht in Firefox oder Chrome. Wem solch eine App bekannt ist, darf mir gerne einen Kommentar hinterlassen.

EDIT: wieso auch immer, musste ich feststellen, dass ich über 200 Dublikate in meinen Bookmarks hatte. Diese alle per Hand zu entfernen war mir zu aufwändig. Das Addon Bookmark Dedublicator hat für mich am besten funtkioniert. Um nicht alle doppelten Bookmarks einzeln löschen müssen, ruft man das Addon am besten über die Firefox-Addon-Seite auf. Wenn man dort das Addon auswähl sieht man die Option “Suchen”. Daneben findet man schon die Anzeige, ob Dublikate gefunden wurden oder nicht.

05-05 WordPress Mozilla_Sync10

klickt man anschließend auf Suchen, werden alle Dublikate angezeigt und können ganz einfach mit einem Klick auf Remove all entfernt werden.

05-05 WordPress Mozilla_Sync11

IE9 stürzt ab ohne Meldung

Posted by quark007 | Posted in Programmieren / Coden | Posted on 29-01-2015-05-2008

0

Heute bin ich auf ein Problem gestoßen, das ich vollkommen falsch angegangen bin. Zunächst hatte ich die Mitteilung bekommen, dass ein Skript nicht mehr richtig laufen würde (benutzt wurde der IE 9.0.8112). Die Seite ließe sich nicht mehr aufbauen und benutzen schon mal garnicht.

Ich habe zunächst an den Server und einen überlasteten Apache gedacht. Alles überprüft aber auch im Access- und Errorlog waren keine entsprechenden Hinweise zu finden. Ein Update aller System- und Programmkomponenten hat auch keinen Erfolg gebracht. Dann kam mir die Idee, dass eventuell mit dem Netzwerk und der IP-Vergabe etwas nicht stimmen könnte (da feste IP in dynamischem Netzwerk). Doch auch eine Änderung auf eine mit DHCP zugewiesen Adresse brachte nichts.

Zufällig habe ich die Seite dann mal mit dem Firefox (mein Arbeitswerkzeug) geöffnet und siehe da, alles lief wie geschmiert. Also musste es doch am Internetexplorer liegen. Also habe ich alles mögliche durchprobiert: Quellcode validiert, CSS validiert, JS validiert und alles war in Ordnung. Anschließend habe ich eine neue Seite aufgebaut, ohne Inhalt jedoch mit JS und CSS. Alles ging.

Wieso auch immer aus Verdacht habe ich einfach mal eine PHP-Funktion auskommentiert und oh Wunder, es lief. Diese Funktion erstellt aus einer txt-Datei eine Drop-Down-Liste (mit <select> und <\option>). Zunächst dachte ich an einen falsch oder nicht maskiertes HTML-Element doch auch da habe ich nichts gefunden.

Das Problem war: der Anzeigetext der <\option> war so lang, dass sich der IE daran verhoben hat. Ich habe die Zeichenzahl jetzt auf 256 Zeichen beschränkt und da der IE9 sowieso das Info-Feld nicht weiter vergrößert (nicht wie beim FF), stört es auch nicht. Komischer Weise taucht dieses Problem beim title-Attribut nicht auf. Nur die Bezeichnung ist anfällig dafür.

Da ich über die Internetsuche nichts gefunden habe, musste ich meine Erfahrung einfach niederschreiben. Vielleicht hilft es ja jemandem.