Question

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 ignorer la boîte d'erreur.

Ce que je voudrais, c'est que le message d'erreur soit transféré dans STDOUT et que l'exécution renvoie le processus appelant. Sauter comme une MSGBox ne fait que suspendre l’ensemble.

Des idées?

Était-ce utile?

La solution

Voici comment vous devriez exécuter les travaux par lots de script:

cscript //b scriptname.vbs

Autres conseils

N'utilisez pas WScript; utilisez CScript. À l'invite de commande 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 les messages sur la console (c'est-à-dire, stdout) comme vous le souhaitez. (Il n'utilise pas de fenêtre de dialogue.) Vous voudrez peut-être aussi essayer le commutateur // B, mais je ne peux pas dire s'il doit être exécuté par script ou non. S'il s'agit d'un commutateur persistant et ponctuel comme le commutateur // H, cela peut fonctionner pour vous; sinon, vous devrez peut-être modifier tous vos programmes distants pour l'inclure. D'après les informations que vous avez fournies, le simple fait de changer l'interprète par défaut (// H) fera ce que vous voulez.

Vous devrez également ajouter une sorte de traitement 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 souhaitez simplement ignorer les erreurs consiste à ajouter les éléments suivants 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.

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

Vous n'avez pas précisé la langue que vous utilisez. Si vous utilisez VBScript, vous pouvez écrire un gestionnaire d'erreurs à l'aide de En cas d'erreur ... . Si vous utilisez JScript, vous pouvez utiliser un try {} catch (x) {} bloc.

ne faites pas ceci:

vbscript: En cas d'erreur, reprise suivante

anglais: "Si vous rencontrez une erreur, ignorez-la et continuez."

Je vous suggère de placer votre code de script dans un sous-fichier, par exemple. DoWork - et codez votre script à quelque chose comme:

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 manière, lorsque vous exécutez votre script à l'aide de cscript // b , il échouera et un message d'erreur sera envoyé à stderr et l'appelant recevra un niveau d'erreur différent de zéro.

scroll top