Je voudrais afficher un message à l'utilisateur en utilisant CMD. La façon dont je sais le faire est de créer un fichier .vbs (VBScript) et de 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 à partir de CMD. Peut-être en utilisant une commande pour exécuter VBScripts directement à partir de CMD.
msg
commande. Vous ne pouvez pas l'avoir si vous exécutez une édition familiale de Windows, mais vous pouvez l'ajouter en copiant et collant simplement msg.exe à partir d'une installation Pro.Réponses:
Comme d'autres l'ont dit, il n'y a 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 importante pour vous et dans certaines circonstances, cela pourrait être possible.
Avec PowerShell, il devrait être possible d'exécuter du code sans aucun fichier comme celui-ci:
VBS ne permet pas l'exécution directe de code via cscript ou wscript mais mshta le permet. Vous pouvez l'utiliser comme ceci (si vous avez besoin de plusieurs lignes, utilisez ':' comme délimiteur):
Comme il est basé, il peut être affecté par certaines restrictions GPO, donc si vous avez le choix PowerShell est probablement le pari le plus sûr
la source
mshta
, certains logiciels antivirus le considèrent comme un processus potentiellement indésirable. Au travail, ma tentative d'exécution a abouti à un produit d'entreprise trop zélé (SentinelOne) pour mettre en quarantaine toute ma machine et la supprimer du réseau.Comme suggéré par @wysiwyg, sur les versions Pro / Business * de Windows, vous recherchez la
Msg
commande. 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 ce qui suit:Le résultat ressemble à ceci:
Une considération avec cette commande est que vous ne pouvez pas personnaliser le texte de la barre de titre.
Vous pouvez en savoir plus sur Msg sur TechNet .
* Si vous avez besoin d' une solution qui fonctionne sur toutes les éditions de Windows, y compris Home , à mon avis , la méthode VBScript que vous êtes déjà au courant 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.
la source
J'avais besoin de quelque chose de similaire aujourd'hui. Comme je n'ai pas trouvé de solution de dépendance externe que j'aimais car je ne suis pas vraiment fan de VBScript / Powershell, j'ai continué et j'en ai écrit une:
https://github.com/cubiclesoft/messagebox-windows
Les boîtes de message qu'il génère sont modales par rapport à la fenêtre de console actuelle. Autrement dit, l'utilisateur ne peut rien faire tant qu'il n'a pas fermé la boîte de dialogue. En outre, le code de retour de l'
MessageBox()
appel est renvoyé à l'appelant afin qu'un script puisse réagir à n'importe quel bouton enfoncé. Et, bien sûr, il prend en charge la gamme complète des options de l'MessageBox()
API Win32.L'ajout d'un exécutable de 80 Ko au mélange n'est peut-être pas la tasse de thé de tout le monde. Il est cependant lié statiquement à l'environnement d'exécution VC ++ et prend en charge 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 passer facilement des sauts de ligne à partir de la ligne de commande pour afficher des messages multilignes. Sur un point mineur, il affiche la boîte de dialogue en moins de temps d'horloge murale que toutes les autres solutions présentées jusqu'à présent.
Bien sûr, si la taille du fichier n'a pas d'importance et que les boîtes de dialogue créent une expérience utilisateur trop "en face" et / ou ne nécessitent pas d'interaction avec l'utilisateur, j'ai également rencontré ce projet astucieux:
https://www.paralint.com/projects/notifu/
Qui affiche une bulle contextuelle dans la zone de notification d'état de l'écran à l'aide de IUserNotification . L'inconvénient est que l'exécutable Notifu s'exécute un peu moins de 240 Ko. Un autre exemple malheureux que COM crée des ballonnements inutiles et me laisse souhaiter qu'il y ait une API simple et légère pour la fonctionnalité.
Pour quelque chose de multiplateforme, il y a de la zénité. C'est principalement pour Linux mais il y a aussi des ports Mac et Windows. Le port Windows de zenity est supérieur à 1 Mo car, bien, GTK est assez gonflé.
la source
J'ai un moyen de le faire avec cmd, mais il comprend essentiellement un fichier, mais le fichier est supprimé instantanément après l'exécution du vbs. Ce n'est donc pas vraiment. Tu peux faire :
Type + Icon + Action n'est que des vbs de base, pour référence, ici. https://therevisionist.org/wp-content/uploads/2016/03/vbscript_msgbox_chart-e1458059002411.jpg?x47750 Le code que je vous ai montré crée un fichier contenant du code VBS, puis il l'exécute en utilisant cscript, puis il supprime le fichier après son exécution, donnant l'impression qu'il a été invoqué par l'invite cmd. Pour que cela ressemble davantage à cela, utilisez simplement @echo off. J'espère que cela a aidé!
la source
De plus, avec un exécutable externe (Windows non natif) , il y a
Si vous avez accès à un compilateur VB6, alors ce one-liner produit un exécutable 5.5k:
la source