2008-09-18 6 views
6

Actuellement, WScript affiche une boîte de message en cas d'erreur de script. Ces scripts sont appelés par d'autres processus, et sont exécutés sur un serveur, il n'y a donc personne pour fermer la boîte d'erreur.CScript/WScript Empêche le blocage d'une erreur

Ce que je voudrais, c'est que le message d'erreur soit transféré vers STDOUT, et l'exécution pour retourner le processus appelant. Popping comme MSGBox accroche tout le truc.

Des idées?

Répondre

4

Voici comment vous devez exécuter des travaux par lots Script:

cscript //b scriptname.vbs 
+0

Voir aussi http://stackoverflow.com/questions/8678441/difference-between-wscript-and-cscript/9062764#9062764 – Ben

0

Vous n'avez pas indiqué quelle langue vous utilisez. Si vous utilisez VBScript, vous pouvez écrire un gestionnaire d'erreur à l'aide de l'instruction On Error.... Si vous utilisez JScript, vous pouvez utiliser un bloc try {} catch (x) {}.

0

ne font pas ceci:

vbscript: Le CV d'erreur suivant

anglais: « lorsque vous avez une erreur, l'ignorer et juste continuer. »

2

N'utilisez pas WScript; utiliser CScript. À l'invite de commandes Windows, tapez ce qui suit pour afficher l'aide.

cscript //?
Je suggère ce qui suit:
cscript //H:CScript
Cela fera de CScript votre interpréteur de script par défaut. CScript imprime des messages sur la console (c'est-à-dire, stdout) comme vous le souhaitez. (Il n'utilise pas les fenêtres de dialogue.) Vous pouvez également essayer le commutateur // B, mais je ne peux pas dire si cela doit être exécuté par script ou non. S'il s'agit d'un commutateur persistant, unique comme le commutateur // H, alors cela peut fonctionner pour vous; Si ce n'est pas le cas, vous devrez peut-être modifier tous vos programmes distants pour les inclure. À partir des informations que vous avez fournies, je pense que le simple fait de changer l'interpréteur par défaut (// H) fera ce que vous voulez.

Vous devrez également ajouter une sorte de gestion des erreurs pour empêcher le script de se terminer en cas d'erreur. Dans Visual Basic Scripting Edition, la chose la plus simple à faire si vous voulez simplement ignorer les erreurs est d'ajouter ce qui suit en haut de votre script.

On Error Resume Next
Voir http://msdn.microsoft.com/en-us/library/53f3k80h(VS.85).aspx pour plus d'informations.

1

Utilisez WScript.Echo au lieu de MsgBox. Et exécutez le script en utilisant CSCRIPT au lieu de WSCRIPT.

0

Je vous suggère de mettre votre code de script dans un sous - par exemple DoWork - et le code de votre quelque chose comme script:

On Error Resume Next 

DoWork 

If Err.Number <> 0 Then 

    If "CSCRIPT.EXE" = UCase(Right(WScript.Fullname, 11)) Then 
     WScript.StdErr.Write Err.Number & ": " & Err.Description 
    Else 
     WScript.Echo Err.Number & ": " & Err.Description 
    End If 
    WScript.Quit 1 
End If 

Private Sub DoWork 

    ... your code ... 

End Sub 

De cette façon, lorsque vous exécutez votre script en utilisant cscript //b, et il échoue, vous obtiendrez une sortie de message d'erreur à stderr et l'appelant recevra un non zéro errorlevel.

Questions connexes