Einzelnen Beitrag anzeigen

Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#17

AW: Wie Remote Update eine Windows-Service?

  Alt 8. Mär 2016, 19:45
Code:
@echo off
set Quelldatei="\\Quellrechner\Pfad\Service.exe"
set Zieldatei="Laufwerk:\Verzeichnis\Service.exe"
set ServiceName="service name"
set log=%~dpn0.log
if exist %Quelldatei% (
echo Service %ServiceName% wird ausgetauscht. >>%log%
sc stop %ServiceName% >%log%
copy %Quelldatei% %Zieldatei% >>%log%
del %Quelldatei% >>%log%
sc start %ServiceName% >>%log%
sc query %ServiceName% >>%log%
)
Da gibt's noch etwas Optimierungspotential:
Code:
@echo off
set Quelldatei="\\Quellrechner\Pfad\Service.exe"
set Zieldatei="Laufwerk:\Verzeichnis\Service.exe"
set ServiceName="service name"
set log=%~dpn0.log
if exist %Quelldatei% (
    echo --
    echo %date% %time%
    echo Service %ServiceName% wird ausgetauscht.
    sc stop %ServiceName%
    copy %Quelldatei% %Zieldatei%
    del %Quelldatei%
    sc start %ServiceName%
    sc query %ServiceName%
)>>"%log%"
Übrigens sollte man mit Anführungszeichen innerhalb von Umgebungsvariablen vorsichtig sein. Wenn man sie beim Verwenden der Variable mal nicht haben will, bekommt man sie nicht mehr weg. Sowas kommt zum Beispiel vor, wenn man einen komplexen String aus mehreren Variablen zusammenbauen will. Das führt bei Quotes im Variablenwert u.U. zur Dopplung selbiger mit entsprechend "tollen" Effekten. Daher ist es besser, die Anführungszeichen erst bei der Verwendung von Variablen zu setzen. Bei dem Beispiel hier hab ich mir diese Änderung trotzdem gespart (bis auf das "%log%" am Ende).

Für den Fall, dass die einfache Umlenkung beim Stoppen des Dienstes Absicht war, kann man die doppelte Umlenkung in meiner Variante auch in eine einfache ändern oder das Log zu Beginn des Skripts löschen.

MfG Dalai

Geändert von Dalai ( 8. Mär 2016 um 19:49 Uhr) Grund: Zeitstempel im Log ergänzt
  Mit Zitat antworten Zitat