Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Script VBS coupure par le temps

8 réponses
Avatar
testeur
Bonjour à tous
J'ai développé un script en VBS qui balaye des répertoires pour en supprimer des fichiers.
Ce script dure en moyenne une quarantaine de secondes, mais je n'ai pas trouvé le moyen d'éviter son
arrêt par le temps hors le paramètre externe //T:100
Les modifications des propriétés du script :
Click droit sur nom du fichier Suplang.vbs
Propriétés
Script
case coché ou non : arrêter le script après un nb déterminé de secondes
300 secondes
Ou celle du fichier paramètre associé Suplang.wsh
n'ont strictement aucun effet, mon script est toujours coupé environ au bout de 10 sec.

Il y a t il un autre moyen (dans le code ) de donner un temps maxi pour exécution de ce script hors
le paramètre externe //T:

Merci d'avance.

Olivier

8 réponses

Avatar
Gilles LAURENT [MVP]
"testeur" <olivier; a écrit dans le message de
news:
| Bonjour à tous

Bonjour,

| J'ai développé un script en VBS qui balaye des répertoires pour en
| supprimer des fichiers.
| Ce script dure en moyenne une quarantaine de secondes, mais je n'ai
| pas trouvé le moyen d'éviter son arrêt par le temps hors le paramètre
| externe //T:100
[...]

Normalement les scripts ont par défaut un temps d'exécution illimité.
Quoi qu'il en soit, vous pouvez ajuster le temps d'exécution en runtime
avec la propriété Timeout de l'objet WScript.

Pour une durée de 100 secondes :
WScript.Timeout0

Pour une durée illimitée :
WScript.Timeout=0

Note: L'argument //T: est prioritaire sur la propriété Timeout

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Avatar
testeur
Merci pour cette réponse, mais cette action n'a pas plus d'effet sur mon script que le paramétrage
dans les propriétés du fichier VBS.
J'ai mis en tête de script WScript.Timeout00
et je me fait toujours couper au bout de quelques dizaines de secondes.
Seul le paramètre //T:300 me permet d'exécuter mon script jusqu'au bout.

De plus je n'ai pas trouvé dans la documentation sur MSDN de description de cette méthode
http://msdn.microsoft.com/en-us/library/2x3w20xf(VS.85).aspx
ou de cette propriété
http://msdn.microsoft.com/en-us/library/30cszkt9(VS.85).aspx

Ou peut on en avoir la description ?

Merci d'avance

Olivier
Avatar
testeur
pardon, la page des propriétés est celle la :
http://msdn.microsoft.com/en-us/library/5ahda31z(VS.85).aspx
Olivier
Avatar
Gilles LAURENT [MVP]
"testeur" <olivier; a écrit dans le message de
news:%
| Merci pour cette réponse, mais cette action n'a pas plus d'effet sur
| mon script que le paramétrage dans les propriétés du fichier VBS.
| J'ai mis en tête de script WScript.Timeout00
| et je me fait toujours couper au bout de quelques dizaines de
| secondes.
| Seul le paramètre //T:300 me permet d'exécuter mon script jusqu'au
| bout.

Pouvez-vous exécuter le script VBScript ci-dessous dans une invite de
commande avec le moteur CScript. Celui-ci va permettre de déterminer la
durée d'exécution fixée par défaut :

--- CodeSnippet.vbs ---
WScript.Echo "Timeout:" & WScript.Timeout
WScript.Sleep (1000 * 60) ' attente du timeout
--- CodeSnippet.vbs ---

Note: Le script devrait alors s'arrêter automatiquement avec le message
"Le temps d'exécution du script a été dépassé pour le script
<ScriptName>. L'exécution du script a pris fin.". Si c'est bien la cas
alors un paramètre de configuration du timeout est présent dans le
registre :
HKCUSoftwareMicrosoftWindows Script HostSettings
Timeout (REG_DWORD)

| De plus je n'ai pas trouvé dans la documentation sur MSDN de
| description de cette méthode
| http://msdn.microsoft.com/en-us/library/2x3w20xf(VS.85).aspx
| ou de cette propriété
| http://msdn.microsoft.com/en-us/library/30cszkt9(VS.85).aspx
|
| Ou peut on en avoir la description ?

Cette propriété n'est pas documentée sur MSDN. Vous pouvez toutefois
obtenir sa description dans le Scripting Guide (Listing 3.13 : Setting
the Time-out Value of a Script) :
http://www.microsoft.com/technet/scriptcenter/guide/sas_wsh_gkyu.mspx

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Avatar
Gilles LAURENT [MVP]
"testeur" <olivier; a écrit dans le message de
news:
| pardon, la page des propriétés est celle la :
| http://msdn.microsoft.com/en-us/library/5ahda31z(VS.85).aspx
| Olivier

Voir message précédent.

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Avatar
testeur
J'ai fait le test :
T:Script>cscript test.vbs
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.

Timeout:10
Le temps d'exécution du script a été dépassé pour le script "T:Scripttest.vbs"
.
L'exécution du script a pris fin.
T:Script>

J'ai donc bien une coupure par défaut à 10 sec
J'ai vérifié dans le registre de ma machine XP, j'ai bien cette valeur 10, je ne sais pas comment
elle est arrivé là, puisque j'avais cru comprendre que le défaut était 0.
Sur une machine Vista, la valeur n'est pas définie.

Merci pour l'info, mais je ne comprends pas pourquoi la directive WScript.Timeout00, n'override
pas la valeur mise dans le registre.

Olivier
Avatar
Gilles LAURENT [MVP]
"testeur" <olivier; a écrit dans le message de
news:
| J'ai fait le test :
| T:Script>cscript test.vbs
| Microsoft (R) Windows Script Host Version 5.7
| Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.
|
| Timeout:10
| Le temps d'exécution du script a été dépassé pour le script
| "T:Scripttest.vbs" .
| L'exécution du script a pris fin.
| T:Script>
|
| J'ai donc bien une coupure par défaut à 10 sec
| J'ai vérifié dans le registre de ma machine XP, j'ai bien cette
| valeur 10, je ne sais pas comment elle est arrivé là, puisque j'avais
| cru comprendre que le défaut était 0.
| Sur une machine Vista, la valeur n'est pas définie.

Sous XP également cette valeur n'est pas définie par défaut. Peut-être
avez-vous exécuté un jour la commande CScript //S //T:10 ce qui a pour
effet de sauvegarder les paramètres dans le registre ?

| Merci pour l'info, mais je ne comprends pas pourquoi la directive
| WScript.Timeout00, n'override pas la valeur mise dans le registre.

Dans l'ordre des priorités :
1- L'argument //T
2- Le registre
3- La propriété Timeout

Note: La propriété Timeout doit être considérée en lecture seule si la
durée d'exécution est spécifiée par l'argument //T et/ou alors par le
registre. Dans ce cas l'affectation ne provoque pas d'erreur à
l'exécution mais la valeur spécifiée est simplement ignorée.

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Avatar
testeur
Merci pour toutes ces infos, je vais en tenir compte.
c'est vrai que la documentation sur le sujet est des plus succincte.

Olivier.