Question Comment afficher un Msgbox directement à partir de CMD


Je voudrais afficher un message à l'utilisateur en utilisant CMD. La façon dont je sais le faire est en créant un fichier .vbs (VBScript) et l'exécuter à partir de CMD comme ceci:

(echo MsgBox "Line 1" ^& vbCrLf ^& "Line 2",262192, "Title")> File.vbs

start File.vbs

Mais ce que je veux faire, c'est afficher le message sans créer de fichier, directement depuis CMD. Peut-être en utilisant une commande pour exécuter VBScripts directement à partir de CMD.


2
2017-12-18 00:50


origine


Rechercher le msg commander. Vous ne pouvez pas l'avoir si vous exécutez une édition Home de Windows, mais vous pouvez l'ajouter en copiant et collant simplement msg.exe à partir d'une installation Pro. - wysiwyg
Je voudrais quelque chose d'un peu plus "universel", pour toutes les versions de Windows 10 s'il y a un moyen. - Bita
Il y a toujours des PowerShell. Oft négligé, même si Microsoft a clairement commencé la transition vers l'élimination des invites cmd. - Appleoddity


Réponses:


Comme suggéré par @wysiwyg, sur les versions Pro / Business * de Windows, vous recherchez le Msg commander. Il est disponible dans toutes les versions modernes de Windows (au moins aussi loin que XP). Pour afficher un message à l'utilisateur actuellement connecté, exécutez les opérations suivantes:

msg %username% Your message here

Le résultat ressemble à ceci: enter image description here

Une considération à prendre en compte avec cette commande est que vous ne pouvez pas personnaliser le texte de la barre de titre.

Vous pouvez en apprendre plus sur Msg sur TechNet.


* Si vous avez besoin d'une solution qui fonctionne sur tout éditions de Windows, y compris la maisonÀ mon avis, la méthode VBScript dont vous avez déjà conscience est la solution la plus simple à ce problème. Il fonctionne sur toutes les versions et éditions modernes de Windows dans leur configuration par défaut et est facile à utiliser.


2
2017-12-18 02:07



Pas tout à fait vrai. Il y avait une commande de boîte de message dps depuis la sortie de Windows. Je crois que cela a été supprimé dans Windows 7 ou 8 car il était considéré comme un exploit possible. - Keltari
Merci de me rappeler cette question. Je voulais y revenir et corriger mon affirmation erronée: aucune commande de ce type n'existait. - Twisty Impersonator


Comme d’autres l’ont dit, il n’ya aucun moyen de le faire uniquement avec cmd mais, bien que ce soit le titre de la question, il me semble que la partie sans fichier est plus important pour vous et dans certaines circonstances, cela pourrait être possible.

Avec powershell, il devrait être possible d'exécuter du code sans n'importe quel fichier comme ceci:

PowerShell -Command "Add-Type -AssemblyName PresentationFramew
ork;[System.Windows.MessageBox]::Show('Hello World')"

VBS n'autorise pas l'exécution directe du code via cscript ou wscript, mais mshta le fait. Vous pouvez l'utiliser comme ça (si vous avez besoin de plusieurs lignes, utilisez ':' comme délimiteur):

mshta vbscript:Execute("msgbox ""Hello World"":close")

Comme c’est le cas, il peut être affecté par des restrictions gpo, donc si vous avez le choix, powershell est probablement le plus sûr.


0
2018-01-30 15:26





J'avais besoin de quelque chose de similaire aujourd'hui. Comme je ne pouvais pas trouver une solution de dépendance externe que j'aimais bien car je ne suis pas vraiment fan de VBScript / Powershell, je suis allé de l'avant et en ai écrit une:

https://github.com/cubiclesoft/messagebox-windows

Les boîtes de message qu'il produit sont modal à la fenêtre de la console actuelle. En d'autres termes, l'utilisateur ne peut rien faire avant de fermer la boîte de dialogue. En outre, le code retour de la MessageBox() call est renvoyé à l'appelant pour qu'un script puisse réagir à n'importe quel bouton sur lequel vous avez appuyé. Et, bien sûr, il prend en charge la gamme complète des options à la MessageBox() API Win32.

Ajouter un exécutable de 80 Ko au mixage ne serait peut-être pas la tasse de thé de tout le monde. Il est lié statiquement à l'environnement d'exécution VC ++ et supporte Unicode, ce qui explique pourquoi le fichier est si volumineux compte tenu de la nature minimaliste de ce qu'il fait. Et il y a un problème mineur de ne pas pouvoir transmettre facilement de nouvelles lignes à partir de la ligne de commande pour afficher des messages multilignes. En revanche, il affiche la boîte de dialogue avec moins d’horloge que toutes les autres solutions présentées jusqu’à présent.

Bien sûr, peu importe la taille du fichier et que les dialogues créent une expérience utilisateur trop complexe et / ou ne nécessitent pas d’interaction de la part de l’utilisateur, je suis également tombé sur ce projet intéressant:

https://www.paralint.com/projects/notifu/

Qui affiche une bulle dans la zone de notification d'état de l'écran en utilisant IUserNotification. L'inconvénient est que l'exécutable Notifu tourne à peine à 240KB. Un autre exemple malheureux que COM crée des ballonnements inutiles et me laisse souhaiter qu’il existe une API simple et légère pour cette fonctionnalité.

Pour quelque chose de multiplateforme, il y a de la zénité. C'est principalement pour Linux, mais il existe aussi des ports Mac et Windows. Le port Windows de zenity a une taille de plus de 1 Mo car, bien, GTK est assez gonflé.


0
2017-08-26 03:06