Freitag, 18. März 2011

Outlook-Signatur generieren - Skript

Ggf. steht man als Administrator mal vor dem Problem, dass man die Benutzer in seiner Firma anweisen möchte, eine einheitliche Emailsignatur zu verwenden. Sind die Nutzer zuverlässig genug, kann man ihnen ein Muster zukommen lassen und der User muss den Rest der Einrichtung selber übernehmen. Ein Garant für Einheitlichkeit ist dies allerdings nicht. Gute Tools, welche die Emailsignatur in der Domäne verteilen, gibt es auch keine, zumindest nicht, wenn man sie auch in einer Exchange/Outlook 2010 Umgebung benötigt.

Wie also kann ich den Benutzer dazu bringen, ohne großen Auwand eine einheitliche Emailsignatur zu erstellen?

Wie so oft kann man sich mit kleinen Scripts behelfen. In diesem Falle übernimmt meine Batch den Part der Generierung. Der Benutzer wird nach ein paar Variablen gefragt, welche in ein vorformatiertes HTML/Plain-Text-Dokument eingefügt werden. Ist der Benutzer mit der Beantwortung aller Fragen fertig, muss er die Mailsignatur im Outlook lediglich noch auswählen, damit sie bei neuen Mails/Mailantworten auch automatisch eingefügt wird.


Was das Skript kann/nicht kann:

Das Skript, so wie es hier angeboten wird, erstellt eine Nur-Text-Signatur und eine HTML-Signatur, wie sie bei mir in der Firma gefordert wurde. Sobald man im Outlook diese Signatur als Standard einstellt, generiert Outlook auch noch eine RTF-Signatur, anhand der vorliegenden HTML-Datei.
Formatiert ist das HTML so, dass die Signatur einheitlich in Arial, schwarz, Schriftgröße 10, ohne Farbvariationen erstellt wird. Dabei werden auch Umlaute und &-Zeichen unterstützt. Vertretungskürzel werden ebenso abgefragt, wie die Korrektheit der Mailadresse und die Position im Unternehmen. Auch wird sichergestellt, dass Outlook nicht läuft, während die Signatur erstellt wird. Wem jetzt noch die vielen "echo." auffallen: diese habe ich eingefügt, um dem Benutzer ein sauberes CMD-Feld zu übergeben. Wer seine CMD maximiert, wird merken, dass der Text weiter oben dennoch auftaucht.

Um bisherige Signaturen nicht einfach zu löschen, sondern zu sichern, habe ich noch eine Backup-Funktion mit eingebaut. Zur Not lassen sich also alte Signaturen einsehen/wieder herstellen. Diese liegen dann unter "%appdata%\Microsoft\Signatures".
Der Großteil der Signatur wird in Variablen übergeben und lässt sich im "Konfig-Bereich" per Hand vom Administrator abändern. Nötige Informationen sind den Kommentaren zu entnehmen.

Das Skript ist natürlich weitestgehend auf meine Anforderungen bzw. die meiner Firma abgestimmt. Abänderungen sind jederzeit möglich, jedoch wird dazu Basiswissen für Batch und HTML benötigt, wobei ich die meisten Variationen bereits in den auskommentierten Bereichen aufzeige bzw. Fragen vorgreife.

Nach der Erstellung des Skripts muss der Benutzer noch per Hand im Outlook in den Optionen in den Punkt "E-Mail-Format" wechseln und hier im Bereich der Siganturen in den beiden Dropdownfeldern die auswählbare Signatur einstellen.


Hier nun das besagte Skript mit einer Beispielfirma. Es ist ratsam, sich dieses komplett durchzulesen, auf jeden Fall aber den Konfig-Bereich zu überarbeiten (für die Bearbeitung empfehle ich wärmstens Notepad++, welches die Syntax von Batch beherrscht und übersichtlich einfärbt!):



@echo off & setlocal

title Email-Signatur Generator

REM ==========================================
REM Definiere Zeit-Format
REM ==========================================
set "datum=%date:~-4%%date:~-7,2%%date:~-10,2%"
set "zeit=%time:~0,2%%time:~3,2%%time:~6,2%"
set "zeit=0%zeit: =%"
set "zeit=%zeit:~-6%"

REM ==========================================
REM Voraussetzung für die Handhabung der Umlaute
REM ==========================================
for /f "tokens=2 delims=:." %%i in ('chcp') do set "CP=%%i"

chcp 1252>nul
REM ==========================================
REM Konfig-Bereich zum Definieren der Variablen
REM ==========================================
SET SIGPATH="%APPDATA%\Microsoft\Signatures"
SET SIG_BACKUP="%APPDATA%\Microsoft\Signatures_Backup"
REM Bei der Firma bitte die Variable bitte in "" schreiben,
REM aus Kompatibilitätsgründen zu dem &-Zeichen
SET "FIRMA=Heck & Decker"
SET STRASSE=Hauptstraße 110
SET ORT=D-90999 Testnitz
REM Bei Telefon keine Durchwahl mit angeben, diese wird später abgefragt
SET TELEFON=+49(0)9999-90999
SET FAX_MAIN=+49(0)9999-90999
SET URL=http://www.heck-decker.ru
SET MAILDOM=heck-decker.ru
REM Zusatzvariablen können wie im Muster unten beliebig viele erstellt werden
REM Pro Zeile ist eine Zusatz-Variable vorgesehen
SET ZUSATZ1=Amtsgericht Testnitz HRB 99999
SET ZUSATZ2=Ust.-IdNr.: DE123456789
SET ZUSATZ3=Geschäftsführer: Herberter Hecker
REM SET ZUSATZ4="XYZ"
REM SET ZUSATZ5="123"
REM etc.
REM ==========================================
REM ==========================================
chcp %CP%>nul
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo ###########################################################
echo # Skript zur automatischen Generierung der Email-Signatur #
echo #                      (C) by Snaker                      #
echo #                     v1.3 - 18.03.2011                   #
echo ###########################################################
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.

REM ==========================================
REM Schleife zum Beenden der Outlook.exe
REM ==========================================
:STOP_OUTLOOK
echo.
TaskList /FI "IMAGENAME eq OUTLOOK.EXE" 2>NUL | Find "OUTLOOK.EXE" >NUL
IF ERRORLEVEL == 1 (
  GOTO START
  ) ELSE (
    GOTO Loop
    )
   
:Loop
echo.
echo.
echo.
echo Der Prozess "OUTLOOK.EXE" ist noch nicht beendet.
echo Bitte beenden Sie Outlook, bevor Sie fortfahren!
echo.
pause
goto STOP_OUTLOOK

REM ==========================================
REM Setzen der Variablen durch Usereingabe
REM ==========================================
:START
echo.
echo.
echo Bitte geben Sie nun folgende Daten ein und bestaetigen Sie Ihre Eingabe
echo jeweils mit ENTER! Leere Eintraege starten den Abfrage-Vorgang von vorn!
echo.
echo.

SET /p VORNAME=Bitte geben Sie Ihren Vornamen an:
if not defined VORNAME goto FAIL
echo.
SET /p NACHNAME=Bitte geben Sie Ihren Nachnamen an:
if not defined NACHNAME goto FAIL
echo.
SET /p DURCHWAHL=Bitte geben Sie Ihre Telefondurchwahl an:
if not defined DURCHWAHL goto FAIL
echo.
SET /p FAX=Bitte geben Sie die Durchwahl Ihres Faxes an:
if not defined FAX goto FAIL
goto ASK_ADDON
echo.
echo.

REM ==========================================
REM Sofern keine Eingabe erfolgt, geht diese
REM Sprungmarke wieder an den Anfang der Abfrage
REM ==========================================
:FAIL
echo.
echo Sie haben einen Eintrag ausgelassen, starte Skript von vorne!
echo.
echo _____________________________________________________________
echo.
goto START

REM ==========================================
REM Kürzel abfragen durch Auswahlmenü
REM ==========================================
:ASK_ADDON
ECHO.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo ==================================================
echo Welches Vertretungskuerzel moechten Sie verwenden?
echo ==================================================
ECHO (1) Keines
ECHO (2) i. A.
ECHO (3) i. V.
ECHO (4) ppa.
REM Hier können Sie durch Entfernen des "REM" auch die Möglichkeit geben, selber ein Kürzel einzugeben:
REM ECHO (5) manuell ein eigenes Kuerzel angeben
echo.
set choice=
set /p choice=Druecken Sie bitte die entsprechende Zahl und bestaetigen dann mit ENTER:
if not "%choice%"=="" set choice=%choice:~0,1%
if "%choice%"=="1" goto MAILCHECK
if "%choice%"=="2" goto IA
if "%choice%"=="3" goto IV
if "%choice%"=="4" goto PPA
REM if "%choice%"=="5" goto OWN_ADDON
ECHO "%choice%" Sie haben keine oder eine falsche Eingabe getaetigt! && GOTO ASK_ADDON

:PPA
SET ADDON=ppa.
goto MAILCHECK

:IV
SET ADDON=i. V.
goto MAILCHECK

:IA
SET ADDON=i. A.
goto MAILCHECK

REM :OWN_ADDON
REM SET /p ADDON=Geben Sie jetzt ihr eigenes Kuerzel an:
REM goto MAILCHECK

REM ==========================================
REM Abfrage der Mailadresse, sofern nicht
REM nachname@firmendomain.tld wird manuelle Eingabe
REM gefordert
REM ==========================================
:MAILCHECK
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo =================================================
REM echo Lautet Ihre Emailadresse: %NACHNAME%@%MAILDOM%?
echo Lautet Ihre Emailadresse: %USERNAME%@%MAILDOM%?
echo =================================================
echo.
ECHO (j) Ja
ECHO (n) Nein
set choice=
set /p choice=Bitte j fuer Ja oder n fuer Nein druecken und mit ENTER bestaetigen:
if not "%choice%"=="" set choice=%choice:~0,1%
if "%choice%"=="j" goto POSITION
if "%choice%"=="n" goto EMAIL
ECHO "%choice%" Sie haben keine oder eine falsche Eingabe getaetigt! && GOTO MAILCHECK

:EMAIL
echo.
echo Bitte geben Sie Ihre vollstaendige Mailadresse an
SET /p MAILADDRESS=(z. B. Nachname@%MAILDOM%):

REM ==========================================
REM Frage Position ab
REM ==========================================
:POSITION
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo ================================
echo Bitte geben Sie Ihre Position an
SET /p POSITION=(z. B. "EDV-Administrator"):
if defined POSITION goto MAKEDIR
ECHO Sie haben keine oder eine falsche Eingabe getaetigt! && GOTO POSITION

REM ==========================================
REM Erstelle Ordnerstruktur, sofern nötig
REM ==========================================
:MAKEDIR
If exist %SIGPATH% goto SAVE_SIG
If exist %APPDATA%\Microsoft mkdir %SIGPATH% && goto SAVE_SIG
mkdir %APPDATA%\Microsoft
mkdir %SIGPATH%

REM ==========================================
REM Fertige Backup der alten Signatur(en) an
REM ==========================================
:SAVE_SIG
If not exist %SIG_BACKUP% mkdir %SIG_BACKUP%
XCOPY /I /T /Y /E %SIGPATH%\* %SIG_BACKUP%\%datum%_%zeit%
XCOPY /I /Y /E %SIGPATH%\* %SIG_BACKUP%\%datum%_%zeit%
RD /Q /S %SIGPATH%

REM ==========================================
REM Erstelle den Ordner "Signatures" und setze
REM den Zeichensatz um, zur korrekten Handhabung
REM der Umlaute
REM ==========================================
:GENERATE
If not exist %SIGPATH% mkdir %SIGPATH%
chcp 1252>nul

REM ==========================================
REM Generiere Nur-Text-Signatur
REM ==========================================
echo.
echo Generiere die Mail-Signatur (Nur-Text)
echo.
echo Mit freundlichen Grüßen/With best regards > %SIGPATH%\%username%.txt
echo. >> %SIGPATH%\%username%.txt
if defined ADDON echo %ADDON% %VORNAME% %NACHNAME% >> %SIGPATH%\%username%.txt
if not defined ADDON echo %VORNAME% %NACHNAME% >> %SIGPATH%\%username%.txt
REM "setlocal" ermöglicht die Ausgabe von "&" im Text
setlocal enabledelayedexpansion
echo !POSITION! >> %SIGPATH%\%username%.txt
echo !FIRMA! >> %SIGPATH%\%username%.txt
endlocal
echo %STRASSE% >> %SIGPATH%\%username%.txt
echo %ORT% >> %SIGPATH%\%username%.txt
echo Tel: %TELEFON%-%DURCHWAHL% >> %SIGPATH%\%username%.txt
echo Fax: %FAX_MAIN%-%FAX% >> %SIGPATH%\%username%.txt
if defined MAILADDRESS echo Mail: %MAILADDRESS% >> %SIGPATH%\%username%.txt
if not defined MAILADDRESS echo Mail: %USERNAME%@%MAILDOM% >> %SIGPATH%\%username%.txt
echo %URL% >> %SIGPATH%\%username%.txt
echo.  >> %SIGPATH%\%username%.txt
echo %ZUSATZ1% >> %SIGPATH%\%username%.txt
echo %ZUSATZ2% >> %SIGPATH%\%username%.txt
echo %ZUSATZ3% >> %SIGPATH%\%username%.txt
echo.
REM ==========================================
REM Generiere HTML-Signatur
REM ==========================================
echo Generiere die Mail-Signatur (HTML)
echo.
echo ^<html^> > %SIGPATH%\%username%.htm"
echo ^<head^> >> %SIGPATH%\%username%.htm
echo ^</head^> >> %SIGPATH%\%username%.htm
echo ^<body lang=DE link=blue vlink=purple style='tab-interval:35.4pt'^> >> %SIGPATH%\%username%.htm
echo ^<div class=WordSection1^> >> %SIGPATH%\%username%.htm
echo ^<p class=MsoAutoSig^>^<span style='font-size:10.0pt;font-family:"Arial","sans-serif"; >> %SIGPATH%\%username%.htm
echo color:black'^>Mit freundlichen Gr^&uuml;^&szlig;en/With best regards^<br^> >> %SIGPATH%\%username%.htm
echo ^<br^> >> %SIGPATH%\%username%.htm
if defined ADDON echo %ADDON% %VORNAME% %NACHNAME%^<br^> >> %SIGPATH%\%username%.htm
if not defined ADDON echo %VORNAME% %NACHNAME%^<br^> >> %SIGPATH%\%username%.htm
REM "setlocal" ermöglicht die Ausgabe von "&" im Text
setlocal enabledelayedexpansion
echo !POSITION!^<br^> >> %SIGPATH%\%username%.htm
echo !FIRMA!^<br^> >> %SIGPATH%\%username%.htm
endlocal
echo %STRASSE%^<br^> >> %SIGPATH%\%username%.htm
echo %ORT%^<br^> >> %SIGPATH%\%username%.htm
echo Tel: %TELEFON%-%DURCHWAHL%^<br^> >> %SIGPATH%\%username%.htm
echo Fax: %FAX_MAIN%-%FAX%^<br^> >> %SIGPATH%\%username%.htm
if defined MAILADDRESS echo Mail: ^<a href="mailto:%MAILADDRESS%"^>%MAILADDRESS%^</a^>^<br^> >> %SIGPATH%\%username%.htm
if not defined MAILADDRESS echo Mail: ^<a href="mailto:%USERNAME%@%MAILDOM%"^>%USERNAME%@%MAILDOM%^</a^>^<br^> >> %SIGPATH%\%username%.htm
echo ^<a href="%URL%"^>%URL%^</a^>^<br^> >> %SIGPATH%\%username%.htm
echo ^<br^> >> %SIGPATH%\%username%.htm
echo %ZUSATZ1%^<br^> >> %SIGPATH%\%username%.htm
echo %ZUSATZ2%^<br^> >> %SIGPATH%\%username%.htm
echo %ZUSATZ3%^</span^>^</p^> >> %SIGPATH%\%username%.htm
echo ^<p class=MsoAutoSig^>^<o:p^>^&nbsp;^</o:p^>^</p^> >> %SIGPATH%\%username%.htm
echo ^</div^> >> %SIGPATH%\%username%.htm
echo ^</body^> >> %SIGPATH%\%username%.htm
echo ^</html^> >> %SIGPATH%\%username%.htm
goto ENDE

REM ==========================================
REM Sprungmarke für etwaige Fehler um das
REM Skript zu verlassen
REM ==========================================
:ERROR
echo Es ist ein Fehler aufgetreten, breche ab!
pause
goto AUSGANG

:ENDE
REM ==========================================
REM Beende Zeichensatzumstellung
REM ==========================================
chcp %CP%>nul
echo.
echo.
echo =======================================================================
echo Der Vorgang wurde abgeschlossen!
echo Bitte ueberpruefen Sie Ihre Email-Signatur im Outlook.
echo Sofern Sie Tippfehler finden, starten Sie dieses Skript bitte erneut.
echo Es wurden Backups ihrer vorhandenen Signaturen erstellt.
echo.
echo Bei Fragen oder Problemen wenden Sie sich bitte an Ihren Administrator.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
REM ==========================================
REM Starte Outlook und rufe Anleitung zur
REM Signatur-Einstellung im Outlook auf
REM ==========================================
echo Druecken Sie eine Taste, um das Skript zu beenden und Outlook zu starten.
pause >nul
start outlook.exe
REM Hier kann man noch eine Erklärung im HTML-Format aufrufen, wie der User die Signatur
REM im Outlook einstellen muss, z. B.:
REM start \\server\signature\howto.htm

:AUSGANG
exit


Ich hoffe, es kann jemand was damit anfangen. Bei unseren Usern hat es sehr gut funktioniert, einfach eine Mail rumgeschickt, die Batch verlinkt und ein paar Tage später hatten alle eine einheitliche Signatur. 

So far

Snaker

3 Kommentare:

  1. Klasse Tool, funktionierte im ersten Test schon mal super, auch wenn der Eintrag schon etwas älter ist ;-)
    Weißt Du zufällig ob es auch mit Outlook 2003 funktioniert da ich in der Firma noch einige Rechner mit 2003 hab ?
    Werde auf jeden Fall noch etwas dran rumbasteln um es für meine Zwecke zu optimieren.
    Vielen Dank!
    Adamo

    AntwortenLöschen
    Antworten
    1. Hallo Adamo!

      Ich habe nach langem Sucher nach einer Lösung auch dieses Skript gefunden und für meine Zwecke umfassend angepasst.

      Es funktioniert in einer Umgebung von mehr als 1000 Beschäftigten wunderbar unter Outlook 2003.

      Vielen Dank an Snaker!!!

      Gerd

      Löschen
  2. Snaker'S It-Allerlei: Outlook-Signatur Generieren - Skript >>>>> Download Now

    >>>>> Download Full

    Snaker'S It-Allerlei: Outlook-Signatur Generieren - Skript >>>>> Download LINK

    >>>>> Download Now

    Snaker'S It-Allerlei: Outlook-Signatur Generieren - Skript >>>>> Download Full

    >>>>> Download LINK Z5

    AntwortenLöschen