Eine kleine Aktualisierung zu dem Blog-Eintrag SnTT:
Starten von Batch-Dateien mit Programm-Dokumenten
von 2007:
Ein freundlicher Leser unseres Blogs
(Danke, Ruaridh) hat mich darauf aufmerksam gemacht, dass das Beispiel-Skript
nicht wie gewünscht durchlief. Es würde zwar den Server beenden, ihn dann
aber nicht mehr starten - wenn das Skript von einem Programm-Dokument aus
gestartet wurde. Wird es manuell gestartet, funktioniere es wie gewünscht.
Eine etwas längere Suche brachte mich
dann doch schließlich auf die richtige Fährte:
Während bei einem manuellen Start das
Skript auch weiter läuft, wenn zu löschende oder umzubenennende Dateien
nicht vorhanden sind, und nur eine Warnung in der Konsole ausgegeben wird,
bricht das Skript sofort ab, wenn es per Programm-Dokument gestartet wird.
Die Lösung ist also, vorher zu prüfen,
ob die Datei überhaupt existiert, also statt
DEL "%DOMINO_DATA%\log.nsf.4" >>"%BATCH_FILE_LOG%"
REN "%DOMINO_DATA%\log.nsf.3" "%DOMINO_DATA%\log.nsf.4" >>"%BATCH_FILE_LOG%"
besser
IF EXIST "%DOMINO_DATA%\log.nsf.4" DEL "%DOMINO_DATA%\log.nsf.4" >>"%BATCH_FILE_LOG%"
IF EXIST "%DOMINO_DATA%\log.nsf.3" REN "%DOMINO_DATA%\log.nsf.3" "log.nsf.4" >>"%BATCH_FILE_LOG%"
schreiben.
Das vollständige, korrigierte Batch-Skript
ist dann:
@ECHO OFF
REM variable parts; to be adapted for each installation
SET DOMINO_SERVICE=Lotus Domino Server (notesdomino6)
SET DOMINO_PROGS=C:\Programme\Domino6
SET DOMINO_DATA=D:\Notes\Domino6
SET BATCH_FILE_LOG=%DOMINO_DATA%\weekly-maintenance.log
REM log settings
ECHO Weekly maintenance started >>"%BATCH_FILE_LOG%"
date /t >>"%BATCH_FILE_LOG%"
time /t >>"%BATCH_FILE_LOG%"
ECHO DOMINO_SERVICE: %DOMINO_SERVICE% >>"%BATCH_FILE_LOG%"
ECHO DOMINO_PROGS: %DOMINO_PROGS% >>"%BATCH_FILE_LOG%"
ECHO DOMINO_DATA: %DOMINO_DATA% >>"%BATCH_FILE_LOG%"
ECHO. >>"%BATCH_FILE_LOG%"
ECHO Stopping Domino service >>"%BATCH_FILE_LOG%"
net stop "%DOMINO_SERVICE%" >>"%BATCH_FILE_LOG%"
ECHO Compacting system databases >>"%BATCH_FILE_LOG%"
"%DOMINO_PROGS%\ncompact" -c -i names.nsf >>"%BATCH_FILE_LOG%"
"%DOMINO_PROGS%\ncompact" -c -i admin4.nsf >>"%BATCH_FILE_LOG%"
"%DOMINO_PROGS%\ncompact" -c -i events4.nsf >>"%BATCH_FILE_LOG%"
REM Domino 7+ only
REM "%DOMINO_PROGS%\ncompact" -c -i ddm.nsf >>"%BATCH_FILE_LOG%"
ECHO Refreshing view in Domino Directory >>"%BATCH_FILE_LOG%"
"%DOMINO_PROGS%\nupdall" -R names.nsf >>"%BATCH_FILE_LOG%"
ECHO Save log database (4 generations) >>"%BATCH_FILE_LOG%"
IF EXIST "%DOMINO_DATA%\log.nsf.4" DEL "%DOMINO_DATA%\log.nsf.4" >>"%BATCH_FILE_LOG%"
IF EXIST "%DOMINO_DATA%\log.nsf.3" REN "%DOMINO_DATA%\log.nsf.3" "log.nsf.4" >>"%BATCH_FILE_LOG%"
IF EXIST "%DOMINO_DATA%\log.nsf.2" REN "%DOMINO_DATA%\log.nsf.2" "log.nsf.3" >>"%BATCH_FILE_LOG%"
IF EXIST "%DOMINO_DATA%\log.nsf.1" REN "%DOMINO_DATA%\log.nsf.1" "log.nsf.2" >>"%BATCH_FILE_LOG%"
IF EXIST "%DOMINO_DATA%\log.nsf" REN "%DOMINO_DATA%\log.nsf" "log.nsf.1" >>"%BATCH_FILE_LOG%"
ECHO Restarting Domino service >>"%BATCH_FILE_LOG%"
net start "%DOMINO_SERVICE%" >>"%BATCH_FILE_LOG%"
ECHO. >>"%BATCH_FILE_LOG%"
ECHO Weekly maintenance completed >>"%BATCH_FILE_LOG%"
date /t >>"%BATCH_FILE_LOG%"
time /t >>"%BATCH_FILE_LOG%"
ECHO. >>"%BATCH_FILE_LOG%"