Exists Comment voulez-vous vérifier si un service WIN32 existe et, le cas échéant, faire une opération?Si le service Condition
Répondre
Du haut de ma tête, vous pouvez vérifier si un service est en cours d'exécution spécifique, comme mentionné par bmargulies, en utilisant la commande « net », la tuyauterie du résultat dans « trouver ». Quelque chose comme ce qui suit vérifierait si un service était en cours d'exécution, et si c'est le cas, arrêtez-le. Vous pouvez alors le démarrer sans se soucier si elle était déjà en cours d'exécution ou non:
net start | find "SomeService"
if ERRORLEVEL 1 net stop "SomeService"
net start "SomeService"
Si vous utilisez findstr pour faire une recherche, comme certains des autres réponses ont suggéré, alors vous vérifier ERRORLEVEL égale à 0 (zéro) ... si elle est alors vous avez trouvé la chaîne que vous cherchez:
net start | findstr "SomeService"
if ERRORLEVEL 0 net stop "SomeService"
net start "SomeService"
Essentiellement la plupart des commandes DOS mis ERRORLEVEL, vous permettant de vérifier si quelque chose comme une trouvaille a réussi.
Vous ne pouvez pas le faire dans le DOS, comme DOS n'est pas Windows et ne même pas le concept d'un « service ».
Dans un fichier batch Windows, vous pouvez utiliser la commande sc
pour trouver des services:
sc query | findstr SERVICE_NAME
Cela énumérer tous les services et donner leurs noms respectifs.
Vous pouvez rechercher un service avec
sc query | findstr /C:"SERVICE_NAME: myservice"
Rappelez-vous que cette recherche est sensible à la casse. Vous pouvez ajouter le commutateur /I
-findstr
pour éviter cela.
Comment l'utilisation WMIC
:
La première liste de tous les processus, puis grep votre nom de processus. Aucun résultat ne sera imprimé s'il n'existe pas.
wmic service |findstr "ProcessName"
Exemple:
C:\>wmic service |findstr "Search"
FALSE TRUE Windows Search
comment cela fonctionnerait-il dans une instruction if? – Burt
@Burt: si déclaration dans quelle langue? batch, vbscript, C# ou même perl? Certes, il sera beaucoup plus facile si vous installez wc (partie de coreutils dans gnu32), vous ferez c:> service wmic | findstr "Recherche" | wc -l, puis écrire du code pour saisir ce nombre à déterminer. –
Juste un additif à la réponse acceptée. Si vous cherchez à faire autre chose que de simplement redémarrer le service, et que vous cherchez à voir si le service est installé.
sc query state= all | findstr /C:"SERVICE_NAME: MyService"
if ERRORLEVEL 0 (**My Operation**)
Dans ce cas, l'état = tout est important car si le service ne démarre pas, il sera interprété comme ne est pas installé, qui sont deux choses distinctes.
Comme mentionné, cela devrait être: 'si pas ERRORLEVEL 1 (** Mon Opération **)' – bstoney
Ne doit pas être testé succès: "si (non) errorlevel 1" ??
dans le shell Windows "if errorlevel #" signifie que le errorlevel est # ou plus, donc "si errorlevel 0" est alway vrai.
qui est une réponse à "comment puis-je tester si l'exécution d'un exécutable a fonctionné" mais cela n'a rien à voir avec voir si un service est installé ou fonctionne –
Je sais, mais je n'avais aucun droit d'écrire des commentaires pour le moment. – user2956477
J'utilise le code ci-dessous:
SC QUERY | FIND "SERVICE_NAME: MyService"
IF %ERRORLEVEL% EQU 0 NET STOP MyService
Si MyService ne se trouve pas,% ERRORLEVEL% sera fixé à 1 par FIND, sinon il reste à 0.L'instruction IF% ERRORLEVEL% EQU 0 vous permet de tester ce dernier cas et de poursuivre une opération sur votre service.
IF ERRORLEVEL 0 NET STOP MyService
ne fonctionnera pas, car il exécute la commande si% ERRORLEVEL% est supérieur ou égal à zéro.
Dans un événement post construction Visual Studio, vous devez mettre:
EXIT 0
à la fin, car VS détecte que% ERRORLEVEL% = 0 et il considérer que l'événement post construction a échoué . Utilisez ceci avec précaution car cela masquera toutes les erreurs dans votre séquence de commandes.
Avec cette astuce, vous pouvez ignorer l'erreur et l'utiliser dans votre événement post de construction pour redémarrer votre service:
NET STOP MyService
NET START MyService
EXIT 0
- 1. mysql si la condition
- 2. LINQ - si la condition
- 3. Si la condition problème dans le shell
- 4. si sans condition?
- 5. F # si pas de condition
- 6. pour la boucle/si la condition dans le script shell
- 7. Utiliser si condition pour vérifier le nom de fichier
- 8. si condition dans le diagramme de classe uml?
- 9. SQL Server 2005 - Si condition avec union
- 10. problème se produit dans si condition
- 11. Javascript si la condition d'évaluer toujours faux
- 12. Écrasez .data() si une condition est remplie
- 13. Soumettre uniquement si une condition est remplie?
- 14. Problème dans un php si la condition
- 15. Meilleur moyen d'écrire si la condition
- 16. Si condition dans LINQ Où clause
- 17. si la condition dans Spry Région
- 18. déclaration LINQ comme si la condition
- 19. vérifier si la condition de valeur 0
- 20. Condition de lancement - Vérifier si un service est en cours d'exécution
- 21. Vérifiez si le service WCF existe
- 22. Caching de fichier de service Python Apache Race Condition
- 23. Comment vérifier si le service et le serveur sont disponibles?
- 24. Comment découvrir le service WCF si vous ne connaissez pas le type d'interface du service cible?
- 25. smarty échapper une citation unique dans si autre condition
- 26. Simple question Javascript à propos de "si" condition
- 27. Set propriété Wix que si certaine condition est remplie
- 28. Apparition d'un lien si une condition est remplie
- 29. Rails: lien Facebox si la condition est remplie
- 30. XSl: Variable - Condition pour vérifier si la valeur existe
Quel service sur ce système? S'il vous plaît fournir plus de contextes. –
Ce sera un service local disons nommé ABC. J'ai besoin de redémarrer le service s'il existe dans le cadre d'un événement post-construction en studio visuel. Les événements VS post build sont essentiellement des commandes batch/dos (??). – Burt