Quelle est la commande ou le moyen le plus rapide d'afficher les résultats sur la console à l'aide de vbscript?
165
Vous voulez dire:
Wscript.Echo "Like this?"
Si vous exécutez cela sous wscript.exe
(le gestionnaire par défaut pour l'extension .vbs, donc ce que vous obtiendrez si vous double-cliquez sur le script), vous obtiendrez une boîte de dialogue "MessageBox" avec votre texte. Si vous exécutez cela sous, cscript.exe
vous obtiendrez la sortie dans votre fenêtre de console.
MsgBox("text")
ouMsgBox(object.property)
maisWscript.Echo
c'est plus facile à écrire. Merci.WScript.Echo
doit être utilisé pour savoir si vous exécutez viaWScript
ouCScript
. Autrement dit, il n'est pas unCScript.Echo
, dans le cas où l' avenir Googlers merveille. ( Très heureux que les msgbox aient disparu [lorsqu'elles sont exécutées aveccscript
], cependant; merci.)WScript.Echo
. Je suppose que si vous vouliez rester totalement dans WScript, vous pourriez faire quelque chose d'horriblement douteux comme Exécuter un autre processus pour faire un «SendKeys» au processus parent pour fermer la MessageBox.popup
méthode. Très similaire àecho
mais vous permet de spécifier un délai après lequel il fermera automatiquement la boîte de dialogue. Très pratique et facile à utiliser: technet.microsoft.com/en-us/library/ee156593.aspxCela a été trouvé sur les scripts Dragon-IT et le référentiel de code .
Vous pouvez le faire avec ce qui suit et rester à l'écart des différences cscript / wscript et vous permet d'obtenir la même sortie de console qu'un fichier de commandes. Cela peut vous aider si vous appelez VBS à partir d'un fichier de commandes et que vous devez le rendre transparent.
la source
WScript.Echo
. En fait, la différence est amplifiée, car le script ne fonctionnera plus du tout sous WScript. C'est une technique valide qui a ses utilisations, par exemple si l'on a besoin d'écrire dans StdErr, mais dans le contexte de cette réponse, elle est trompeuse.WScript.Echo
:cscript //b foobar.vbs
Fonctionnefoobar.vbs
sans aucune sortie de console, mais par la méthode de Rob, vous pouvez avoir une sortie même en passant\\b
àcscript.exe
Il vous suffit de forcer cscript à la place de wscript. J'utilise toujours ce modèle. La fonction ForceConsole () exécutera vos vbs en cscript, vous avez également un joli alias pour imprimer et numériser du texte.
la source
Je suis tombé sur ce post et suis revenu à une approche que j'ai utilisée il y a quelque temps et qui est similaire à celle de @ MadAntrax.
La principale différence est qu'il utilise une classe définie par l'utilisateur VBScript pour encapsuler toute la logique de basculement vers CScript et de sortie de texte vers la console, ce qui rend le script principal un peu plus propre.
Cela suppose que votre objectif est de diffuser la sortie vers la console, plutôt que d'avoir la sortie vers les boîtes de message.
La classe cCONSOLE est ci-dessous. Pour l'utiliser, incluez la classe complète à la fin de votre script, puis instanciez-la dès le début du script. Voici un exemple:
Voici le code de la classe cCONSOLE
la source
Il existe cinq façons de sortir du texte sur la console:
WScript.Echo sortira sur la console mais uniquement si le script est démarré à l'aide de cscript.exe. Il sortira dans les boîtes de message s'il est démarré avec wscript.exe.
WScript.StdOut.Write et WScript.StdOut.WriteLine seront toujours affichés sur la console.
StdOut.Write et StdOut.WriteLine seront également toujours émis vers la console. Il nécessite la création d'objets supplémentaires, mais il est environ 10% plus rapide que WScript.Echo.
la source