GNT sans publicité, site mobile, fonctionnalitées exclusives...

durée entre "net stop spooler" et "net start spooler"

Le
Jean-Claude
Bonjour,

sous Windows XP, j'ai un script qui permet d'installer des imprimantes, il
fonctionne bien, mais utilise des "sleep" de plusieurs secondes entre les
"net stop spooler" et "net start spooler".
Est-ce nécessaire ? Quand la commande "net stop spooler" se termine, est-il
nécessaire d'attendr avant de réactiver le spouleur ?
Si je les supprime ou les réduis, je crains qu'un jour l'installation ne se
passe pas bien, et de ne pas m'en apercevoir.

Exemple :

' Ajout des Drivers
Set sh = CreateObject("Wscript.Shell")
Set driver = CreateObject("Driver.Driver.1")
Set master = CreateObject("PrintMaster.PrintMaster.1")

master.DriverAdd driver

sh.Run "net stop spooler /Y",0,TRUE
WScript.Sleep 10000
sh.Run "net start spooler",0,TRUE
WScript.Sleep 10000

' Ajout de l'imprimante
Set printer = CreateObject("Printer.Printer.1")

master.PrinterAdd printer

sh.Run "net stop spooler /Y",0,TRUE
WScript.Sleep 10000
sh.Run "net start spooler",0,TRUE
WScript.Sleep 10000



Merci bien.
Jean-Claude
Lire les 8 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gloops
Le #23835851
Jean-Claude a écrit, le 06/10/2011 20:02 :
Bonjour,

sous Windows XP, j'ai un script qui permet d'installer des imprimantes, il
fonctionne bien, mais utilise des "sleep" de plusieurs secondes entre l es
"net stop spooler" et "net start spooler".
Est-ce nécessaire ? Quand la commande "net stop spooler" se termine, est-il
nécessaire d'attendr avant de réactiver le spouleur ?
Si je les supprime ou les réduis, je crains qu'un jour l'installation ne se
passe pas bien, et de ne pas m'en apercevoir.

Exemple :

' Ajout des Drivers
Set sh = CreateObject("Wscript.Shell")
Set driver = CreateObject("Driver.Driver.1")
Set master = CreateObject("PrintMaster.PrintMaster.1")
...
master.DriverAdd driver

sh.Run "net stop spooler /Y",0,TRUE
WScript.Sleep 10000
sh.Run "net start spooler",0,TRUE
WScript.Sleep 10000

' Ajout de l'imprimante
Set printer = CreateObject("Printer.Printer.1")
...
master.PrinterAdd printer

sh.Run "net stop spooler /Y",0,TRUE
WScript.Sleep 10000
sh.Run "net start spooler",0,TRUE
WScript.Sleep 10000
...


Merci bien.
Jean-Claude





Bonjour,

Fais ça dans une fenêtre de ligne de commandes : tu vas bien
t'apercevoir qu'il faut un peu de temps pour que la commande s'exécute.

Si tu lances la commande de démarrage alors que la commande d'arrêt n 'a
pas fini de s'exécuter, elle risque tout simplement d'être ignorée.

Je ne saurais pas te dire si en script on peut ajuster le délai. Avec l a
plateforme .Net on a un objet ServiceController qui permet une maîtrise
un peu plus fine, et si un jour le service met un peu plus de temps à
répondre (fragmentation, encombrement mémoire ...), le programme
attendra un peu plus, au contraire si ça répond tout de suite on
n'attend pas.

En C# ça peut ressembler à ça :

if (serviceController1.Status ==
System.ServiceProcess.ServiceControllerStatus.Running)
{
label2.Text = "---";
this.Refresh();
serviceController1.Stop();
}
serviceController1.Refresh();
label2.Text = serviceController1.Status.ToString();
this.Refresh();
while (serviceController1.Status !=
System.ServiceProcess.ServiceControllerStatus.Stopped)
{
this.Refresh();
serviceController1.Refresh();
}
serviceController1.Refresh();

label2.Text = serviceController1.Status.ToString();
this.Refresh();
Jean-Claude
Le #23839921
Merci de la réponse.
Mais les commandes d'arrêt et de redémarrage s'exécute en séquence, pas en
simultané.
Il me semble donc que quand "net stop spooler" est fini (donc rend la main),
c'est que le spooler est bien arrêté et que cette commande est finie.
C'est le sens de ma question : est-ce bien le cas ?

Jean-Claude
Sergio
Le #23840031
Le 08/10/2011 18:03, Jean-Claude a écrit :
Merci de la réponse.
Mais les commandes d'arrêt et de redémarrage s'exécute en séquence, pas en
simultané.
Il me semble donc que quand "net stop spooler" est fini (donc rend la main),
c'est que le spooler est bien arrêté et que cette commande est finie.
C'est le sens de ma question : est-ce bien le cas ?



Oui mais...

Si tu les lances dans un .BAT :
@echo off
net stop spooler /Y
net start spooler

C'est exécuté en séquence. Rien à dire.
Mais par vbscript :
sh.Run "net stop spooler /Y",0,TRUE
WScript.Sleep 10000
sh.Run "net start spooler",0,TRUE

Il est possible qu'ils soient lancés dans des threads différents. Je ne connais pas assez vbscript pour l'affirmer, mais c'est une
piste...

--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
JP
Le #23840691
Il est possible qu'ils soient lancés dans des threads différents. Je ne
connais pas assez vbscript pour l'affirmer, mais c'est une


piste...

Comme tu a création d'un objet Shell, oui, normalement l'option true permet
d'attendre la fin de l'exécution du machin appelé mais amha le fait
d'arrêter un service provoque une cascade d'événements dans les reste de
Windows, et il ne me parais pas illogique d'attendre un peu, par contre 10
secondes me parait un peu exagéré.

http://msdn.microsoft.com/en-us/lib...85%29.aspx
Th.A.C
Le #23841501
Le 08/10/2011 18:03, Jean-Claude a écrit :

simultané.
Il me semble donc que quand "net stop spooler" est fini (donc rend la main),
c'est que le spooler est bien arrêté et que cette commande est finie.
C'est le sens de ma question : est-ce bien le cas ?



en théorie oui, mais j'ai de nombreux scripts batchs ou j'ai du rajouter
une petite pause après le 'net stop ...' parce que justement le service
n'avait pas tout à fait fini son arrêt (il y avait encore des fichiers
ouverts).
Le problème est qu'on n'est pas sur qu'une petite pause soit suffisante,
donc il vaut mieux une pause un peu exagérée que trop courte...

Dans un script en vbscript de JCB, j'avais vu un test supplémentaire qui
semblai être destiné à bien vérifier que le service était arrêté.
De mémoire, c'était dans son script de nettoyage de Windows Update pour XP.
Publicité
Suivre les réponses
Poster une réponse
Anonyme