312 votes

Arrêter et démarrer un service avec un fichier batch ou cmd ?

Comment puis-je scripter un fichier batch ou cmd pour arrêter et démarrer un service de manière fiable avec vérification des erreurs (ou me prévenir si cela n'a pas réussi pour une raison quelconque) ?

0 votes

Peut-être un peu hors sujet (puisque vous demandez une instruction bat & cmd) mais : PowerShell vous donne beaucoup de contrôle et de retour d'information pour effectuer des actions comme celle-ci.

4voto

psal Points 560

Ou vous pouvez démarrer le service à distance avec cette commande : sc \\ start

4voto

Clinton Points 41

J'ai juste utilisé l'exemple de Jonas ci-dessus et créé une liste complète de 0 à 24 niveaux d'erreur. L'autre publication a raison que net start et net stop n'utilisent que errorlevel 0 pour le succès et 2 pour l'échec.

Mais voici ce qui a fonctionné pour moi:

net stop postgresql-9.1
if %errorlevel% == 2 echo Accès refusé - Impossible d'arrêter le service
if %errorlevel% == 0 echo Service arrêté avec succès
echo Niveau d'erreur: %errorlevel%

Changer stop en start et fonctionne à l'inverse.

4voto

Kuleris Points 71

Le redémarrage manuel du service est OK - services.msc possède un bouton "Redémarrer", mais en ligne de commande, les commandes sc et net ne disposent pas d'un interrupteur "restart" et si le redémarrage est programmé dans un fichier cmd/bat, le service est arrêté et redémarré immédiatement, parfois cela génère une erreur car le service n'est pas encore arrêté, il a besoin de temps pour arrêter correctement.

Cela peut générer une erreur: sc stop sc start

Il est bon d'insérer un délai, j'utilise ping (qui ping toutes les 1 seconde): sc stop ping localhost -n 60 sc start

4voto

djibe Points 526

Voici la commande Windows 10 pour démarrer la Restauration du système en utilisant le batch :

sc config swprv start= Auto

Vous pouvez également aimer ces commandes :

  • Changer la valeur du registre pour démarrer automatiquement la restauration du système

    REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore" /v DisableSR /t REG_DWORD /d 0 /f

  • Créer un point de restauration système

    Wmic.exe /Namespace:\root\default Path SystemRestore Call CreateRestorePoint "djibe a sauvegardé votre PC", 100, 12

  • Changer l'utilisation du disque de la Restauration du système

    vssadmin resize shadowstorage /for=C: /on=C: /maxsize=10%

Profitez

3voto

npocmaka Points 7794
  1. SC
  2. NET STOP/START
  3. PsService
  4. WMIC
  5. Powershell est également facile pour l' option d'utilisation

SC et NET sont déjà donnés comme des options. PsService ajoute des fonctionnalités intéressantes mais nécessite un téléchargement depuis Microsoft.

Mais ma façon préférée est d'utiliser WMIC car la syntaxe WQL offre un moyen puissant de gérer plusieurs services en une seule ligne (les objets WMI peuvent également être utilisés via powershell/vbscript/jscript/c#).

La manière la plus facile de l'utiliser :

wmic service NomDuService appeler StartService
wmic service NomDuService appeler StopService

Un exemple avec WQL

wmic service where "name like '%%32Time%%' and ErrorControl='Normal'" appeler StartService

Cela démarrera tous les services ayant un nom contenant 32Time et ayant un contrôle d'erreur normal.

Ici sont les méthodes que vous pouvez utiliser.

Avec :

wmic service get /FORMAT:VALUE

vous pouvez voir les informations disponibles sur les services.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X