👀 Alles 📋 Index 📅 Zuletzt 🌐 Links

 

Backup


Backup automatisch starten
Backuptools
Java File Synchronization
Robocopy

 

Outlook


Outlook Anhaenge extrahieren
Outlook Kalender Termine auf Webserver veroeffentlichen


 

Backup



 

Backup automatisch starten

Scripte für manuelle Starts lege ich normalerweise in einem Ordner ab (z.B. c:/install/scripts/...). Auf dem Desktop (oder im Startmenü) liegt dann eine Verknüpfung zu diesem Ordner. Ein Doppelklick aufs Ordnersymbol zeigt alle vorhandenen Scripts an; ein weiterer Doppelklick startet das ausgewählte Script (z.B. vorher die externe USB-Platte einschalten...)...

 

Programme und Scripts lassen sich automatisch starten:


Im folgenden beschrieben die Schritte zum einhängen von Scripts mit der MMC:

 
Die MMC (Microsoft Management Console) starten:


 
Passendes Snap-In auswählen:


 

Vorher nachdenken: Wann sollen die Scripte ausgeführt werden:


 
beim Rechnerstart/Shutdown

und/oder:

 
beim anmelden/abmelden Benutzer

Bestimmte Benutzer unterscheiden könnte man dann im Script (Variable USERNAME und USERPROFILE usw.)...

Je nach dem hat man jetzt im Fenster rechts zwei Einträge zur Auswahl: bzw.

 
Scripte hinterlegen

Anschliessend weitere Scripte ergänzen und alles bestätigen - fertig!
03.09.2007


 

Backuptools

download

 

Die Backuptools



 

Folgende Scripts (Windows *.cmd-Files) sind im Paket enthalten:



 

Spezialscript - besonders in Verbindung mit Winamp Playlists:


Ohne die Unterverzeichnisstruktur zu erhalten: Da manche MP3-Sticks Unterverzeichnisse nicht unterstützen (alle Dateien müssen sich im Wurzelverzeichnis befinden) kann man diese Variante einsetzen. Alle Dateien werden dann in ein Verzeichnis zusammenkopiert. Diese Variante ist auch dazu geeignet, um z.B. das brennen einer Audio-CD anhand einer Playlist vorzubereiten (auch hier möchte man alle Tracks in einem Verzeichnis zusammenstellen).

Ohne die Unterverzeichnisstruktur zu erhalten, aber MIT beibehalten der Reihenfolge der Playlist: Die Dateien werden zwar nach wie vor alle in EIN Verzeichnis geschrieben, aber der Name wird vorne durch eine fortlaufende Nummer ergänzt (Präfix) - dadurch bleibt die durch die Playlist (...) vorgegebene Reihenfolge erhalten!

Mit erhalten der Unterverzeichnisstruktur: Z.B. zum erzeugen von MP3-Daten-CDs für den DVD-Player.

 

Robocopy (c) Microsoft


So praktisch diese winzigen Scripts auch sein mögen - es gibt immer noch etwas besseres. Für reine Backupaktivitäten und speziell mirroring von Files seht Euch unbedingt auch robocopy an!

Zumindest die Scripts neue_brennen.cmd und neue_kopieren.cmd sind mit robocopy wesentlich flexibler zu handeln...
29.04.2008


 

Java File Synchronization 📌

http://jfilesync.sourceforge.net/
siehe auch die Backuptools...

 

JFileSync - Java File Synchronization


Ein Opensource Tool (Java - also eine JRE erforderlich) zum synchronisieren von Verzeichnissen.

Dieses Programm arbeitet mit (u.U. mehreren) einfach zu erstellenden Profilen und einer grafischen Oberfläche. Es arbeitet aber auch mit diversen Programmzeilenparametern, so dass man es auch bei angelegtem Profil (zeitgesteuert) per Script starten kann.
29.04.2008


 

Robocopy

siehe auch die Backuptools...

Robocopy (c) Microsoft bedeutet "robust file copy utility" und ist in den Windows Server 2003 Resource Kit Tools enthalten. Das Kit kann man bei Microsoft downloaden und ist installierbar unter Windows 2003 oder XP. Benutzbar sind die meisten Tools aber auch für ältere Betriebssystemversionen...

Eine Übersicht über alle Resourcekits bekommt man via http://www.microsoft.com/windows/reskits/default.asp
- dann dort dem Link zu ''Windows Server 2003 Resource Kit Tools'' folgen und die Installationsdatei (nur englisch) downloaden...

 

(Nur) ''einige'' Vorteile gegenüber XCOPY:



 

Und die Berechtigungen nicht vergessen...


"...By default, an object inherits permissions from its parent object, either at the time of creation or when it is copied or moved to its parent folder. The only exception to this rule occurs when you move an object to a different folder on the same volume. In this case, the original permissions are retained..."

 

Vista-Hinweis


 
Grund:

Vista legt per default in den Benutzerdateien eine Junction an, die auf ihren Parent Folder verweist (d.h. es entsteht ein Loop).

Robocopy wiederum (ohne Parameter /xj) folgt (endlos) dieser Junction (weil wohl keine Prüfung auf Rekursion=Wiederholung erfolgt) und erzeugt dadurch Dateien mit zu langen Namen (die man auch nicht so einfach wieder los wird, weil der Pfadname zu lang wird - geschweige denn (im Explorer) sieht wenn man die Berechtigungen mitgenommen hat - partitionieren und formatieren mal ausgenommen ;))
11.07.2008


 

Outlook



 

Outlook Anhaenge extrahieren

download

 
VBA Makro (Visual Basic for Applications) für Outlook 2003 zum extrahieren (speichern Anhänge als Datei) von Anhängen eines MailItem ins Filesystem (Laufwerk Pfad Dateiname). Die Anhänge werden anschliessend im Outlook (Exchange) in der Mail gelöscht - in einem neuen Anhang zur Mail wird aber ein (anklickbarer) Verweis mit dem Dateinamen hinterlegt - der Body (als Nur-Text) und die wesentlichen Header werden ebenfalls dokumentiert

 

Installation

Den Pfadnamen sucht man im Makro nach folgender Zeile:
'Hier wird im Dialog nach dem Ort gefragt wo gespeichert werden soll - muss schon existieren
Wenn man diesen Pfad ohnehin nie ändert, ersetze man die ganze Folgezeile durch eine simple Zuweisung anstelle jedesmal eine Dialogbox aufpoppen zu lassen, z.B.:
myOrt = "d:/user/juergen/Archive/Outlook/Anlagen/"
 

Anwendung



 

Arbeitsweise


Zumindest für Nur-Text-Mails könnte man die Hinweise zu extrahierten Anlagen auch einfach im Body der Ursprungsmail hinterlegen (einfach myItem.Body ergänzen). Für HTML/RichText-Mails ist mir das nicht gelungen (die Felder lassen sich zwar ändern, aber die Msg konnte nicht mehr gespeichert werden (als zur Nur-Text-Mail umgewandelte Nachricht schon). Liegt an der "weak Object Reference" für myItem vermute ich. Wahrscheinlich wäre nur eine Kleinigkeit zu ändern gewesen - jetzt ist es mittels externer Anlage gelöst...

 

Wen die Sicherheitsabfrage des Makros nervt



 

Hinweise


14.10.2008


 

Outlook Kalender Termine auf Webserver veroeffentlichen

download

 

Termine (inclusive Serientermine) mittels voll automatisierbarem VBscript aus einem Outlook (2003) Kalender extrahieren und in CSV-Datei zur Weiterbearbeitung bereitstellen und veröffentlichen dieser Daten als navigierbarer Monatskalender auf einem Webserver


 

Automizable Visual Basic script to extract outlook 2003 appointment items (personal calendar) into CSV-file - publishing this data in an web based calendar. Includes (nearly) all possible recurrence types of appointmentItems with handling exceptions too (deleted or modified instances of recurrence appointment items) (Sorry - further documentation in german language only!)...


update 05/2012:

Todo:

---

 

Wieso eigentlich?


Den Web-Monatskalender kann man prima mittels activeDesktop(?) in jeweils aktueller Form angezeigen lassen (Desktop-Hintergrund). Bei der Suche nach fertigen OpenSource Scripts zum exportieren haperte es immer an der ein- oder anderen Stelle. Insbesondere die Serientermine werden da - selbst bei HowTo-Artikeln auf MS-Webseiten - recht stiefmütterlich behandelt (entweder wurden nur ganz simple Serientermine - z.B. jährliche Wiederholungen - wenn überhaupt - mit extrahiert, oder die Scripte agierten schlicht fehlerhaft Beispielscript aus MS Technet - Retrieving a List of Recurring Appointments from Microsoft Outlook).

 

Prinzipielle Funktionsweise



 

Features des Datenextrakt-Scripts aus Outlook mit VBscript (Visual Basic Script)



 

Features bei der Umsetzung des Datenextraktes aus Outlook mit dem php-Script



 

Beispiel zur vollständigen Automatisierung der Vorgänge

...das Batchfile enthält z.B.:
(1) cscript vbs_outlook_terminliste.vbs
(2) c:/proginst/wput/wput -a wputlog.txt -u -B Outlook_Termin_Definitionen.csv ftp://username:passwort@ftp.irgendeine-domain.de
(3) c:/proginst/wget/wget -b -r -a wgetlog.txt -t 1 -T 30 --dns-cache=off --cache=off http://irgendeine-domain.de/somewhere/outlookkalender.php
(1) VBscript extrahiert aus den lokalen Outlookdaten den Inhalt des Ordners Kalender in eine CSVDatei
(2) WPUT transportiert die Datei mit FTP an passende Stelle auf dem Webserver - ich empfehle den UploadManager oder - besser vielleicht - ein hierfür speziell anzulegendes Incoming-Verzeichnis oder ein /tmp-Verzeichnis
(3) WGET triggert einfach nur das Script, dass die Daten auf dem Webserver passend umsetzt, man könnte auch einen cronjob o.ä. aufsetzen

Insbesondere für das WPUT bietet sich evtl. im Einzelfall eine sicherere Alternative an, bei der man z.B. eine verschlüsselte / gesicherte Verbindung nutzt und nicht das normale FTP-Protokoll...

 

Modifikationen an den bisherigen Kalenderbibliotheken


Tja, das Downloadarchiv oben ist kein \"einsatzbereites\" Paket! Wenn man schon einen lauffähigen Kalender (evtl. sogar mitsamt Wiki) von mir hat, sollte es reichen, die Dateien aus dem Archiv zu extrahieren und auf dem Webspace zu ersetzen (Anpassungen und Einstellungen nicht vergessen...) bzw. hinzuzufügen. Allen Anderen wünsche ich viel Spaß beim knobeln :->
Um den Änderungsaufwand an alten Scripten zu minimieren, ist am alten CSV-Dateiformat wenig geändert, aber ich habe zwei neue Felder angehangen. Das erste - ein Notizenfeld - davon nimmt Daten auf, die bisher so nicht vorgesehen waren (Kategorien, Angaben zu Sensitivity u.a. - siehe Scripte! - aus Outlook), das letzte Feld enthält jetzt das Last Modification Date des Terminsatzes). Übrigens: Location, Uhrzeiten und ggf. der Besprechungsstatus von Outlook-Meetings landen einfach im Subject der Termine...

 

Neuentwicklungen



 

Tipps



 

ergänzende Infos


Aus der Microsoft Outlook (c) - Onlinehilfe entnommen: Ein Outlook recurrence AppointmentItem (Serientermin) definiert sich über folgende Eigenschaften:

'===========================================================================
'RecurrenceTyp    Eigenschaften      Beispiel 
'===========================================================================
'0 olRecursDaily    Interval           Alle N Tage 
'                   DayOfWeekMask      Jeden Dienstag, Mittwoch und Donnerstag 
'  
'2 olRecursMonthly  Interval           Alle N Monate 
'                   DayOfMonth         Der N-te Tag im Monat 
'                  
'3 olRecursMonthNth Interval           Alle N Monate 
'                   Instance           Der N-te Dienstag 
'                   DayOfWeekMask      Jeden Dienstag und Mittwoch 
'                   
'1 olRecursWeekly   Interval           Alle N Wochen 
'                   DayOfWeekMask      Jeden Dienstag, Mittwoch und Donnerstag 
'  
'5 olRecursYearly   DayOfMonth         Der N-te Tag im Monat 
'                   MonthOfYear        Februar 
'  
'6 olRecursYearNth  Instance           Der N-te Dienstag 
'                   DayOfWeekMask      Dienstag, Mittwoch, Donnerstag 
'                   MonthOfYear        Februar 
'===========================================================================
'Legende: 
'Instance         1-4(5), 6=Letzter
'DayOfWeekMask Or 1=So, 2=Mo, 4=Di, 8=Mi, 16=Do, 32=Fr, 64=Sa
'DayOfMonth       1-31
'MonthOfYear      1-12
'NoEndDate        true/false
'PatternStartDate Datum
'PatternEndDate   Datum oder... 
'Occurrences      ...Anzahl von Wiederholungen
'===========================================================================
...setzt mein Script um in eine für die php-Scripte / Kalenderlib voradaptierte Form (weil sich jetzt die meisten fragen werden wo denn hier bitteschön die/eine Verbesserung gegenüber dem Outlook-Datenmodell vorliegt)...
'Minidoku
'Subject              Betreff
'Location             Ort
'Start                Beginndatum und ggf. (nicht immer!) Uhrzeit  tt.mm.jjjj hh:mm - betrifft auch alle anderen DatFelder
'End                  Endedatum und ggf. Uhrzeit - der 31.12.4500  23:59:00 scheint das \"Highdate\" zu sein (=ohne Ende)
'AllDayEvent          AllDayEvent (ganztägig) oder leer
'Duration             Dauer in Minuten
'ReminderMinutes      Erinnern x Minuten vor dem Termin
'Categories           Kategorien, getrennt durch Komma(!)
'Importance           Wichtigkeit/Prio, sofern abweichend von Normal
'MeetingStatus        Status des Meetings
'ResponseStatus       Antworten auf Meeting-Anfrage
'Sensitivity          Vertraulichkeit (z.B. \"Privat\"-Schalter)
'LastModificationTime zuletzt geändert am...

'Serie                S, wenn Serientermin, genau wie alle folgenden Felder nur für Terminserien relevant seind:

'Ausnahmen            zu/von einer Serie (gelöscht oder geändert) nach folgendem Schema:
'Trenn1 ^             trennt einzelne Ausnahmeregeln einer Serie
'Trenn2 °             trennt die Felder einer Ausnahme
'isDeleted°21.12.2006^... an diesem Tag findet die Terminserie nicht statt
'isModified°Datum°Start°End°Duration°AllDayEvent°Subject°Location^ ... an diesem Tag ist etwas anders

'StartSerie        Startdatum der Terminserie
'AllDayEvent_Time  AllDayEvent oder Startzeit
'EndSerie          Endedatum der Terminserie
'Type              Typ der Wiederholung:       DAILY   PERIOD   WEEKLY   MONTHLY   MONTHLYnTH  YEARLY   YEARLYnTH
'Monat_Interval    Monat oder Intervall           -     Tage    Interval  Interval   Interval   Monat    Monat
'Day_Instanz       Tag oder Instanznummer         -       -        -        Tag      1-4/L (Wo)  Tag     1-4/L (Wo)
'DayOfWeekMask     Maske betroffener Wochentage   -       -       Maske      -         Maske      -      Maske

'Interval:   Gibt das regelmäßige Intervall an, z.B. bei Wochenterminen ist 1=jede Woche, 2=alle zwei Wochen...
'1-4/L (Wo): Gibt bezogen auf den Wochentag die n.te Woche im Monat an (L=letzte)
'Maske:      Siebenstelliges Feld (Montag-Sonntag), \"MDMDF--\" z.B. wäre Montags-Freitags, \"---D---\" wäre Donnerstags...
'isModified: Beachten, dass auch andere Felder geändert sein könnten (z.B. Meeting..., Categories...)
...diverse weitere Infos finden sich im Quelltext der Scripte, die im übrigen natürlich vor erstem Einsatz angepasst werden müssen (Pfade, Dateinamen etc.).

Wie man sieht, habe ich beim Entwurf nicht ''aufs Bit geschaut'' - natürlich kann man da einiges optimieren (ist bei einer geringen Anzahl an Terminen aber nicht wirklich relevant)...
13.12.2020