173 votes

Afficher une fenêtre contextuelle/une boîte de message à partir d'un fichier batch Windows

Existe-t-il un moyen d'afficher une boîte de message à partir d'un fichier batch (similaire à la manière dont les xmessage peut être utilisé à partir de scripts de base sous Linux) ?

0 votes

CMD.EXE, c'est un processeur de commande 32 bits qui prend en charge les commandes DOS.

7 votes

Il s'agit de l'Invite de commande Windows.

157voto

Joey Points 148544

Tout d'abord, DOS n'a rien à voir avec cela, vous voulez probablement une solution de ligne de commande Windows (encore une fois : pas de DOS, du pur Windows, juste pas une fenêtre, mais une console).

Vous pouvez soit utiliser la méthode VBScript fournie par boflynn, soit faire un mauvais usage de net send o msg . net send ne fonctionne que sur les anciennes versions de Windows :

net send localhost Some message to display

Mais cela dépend aussi du service Messenger à exécuter.

Pour les versions plus récentes (XP et suivantes, apparemment) :

msg "%username%" Some message to display

Il convient de noter qu'une boîte de messages envoyée à l'aide de l'option msg.exe ne durera que 60 secondes. Il est toutefois possible de remplacer ce paramètre par l'option /time:xx interrupteur.

2 votes

Vous pouvez utiliser des variables env pour obtenir l'utilisateur local - %USERNAME%. msg.exe est sur ma machine XP Home, mais j'ai entendu des témoignages anecdotiques selon lesquels il n'est pas sur toutes les versions de Vista. Je crois que le service derrière NET SEND est désactivé ces jours-ci.

0 votes

C'est vrai, merci, j'ai oublié l'envvar (j'utilise rarement autre chose que %UserProfile% et mes propres définitions par lots :)). C'est drôle, cependant, vous avez raison au sujet du service Messenger. Il n'existe même pas sur ma VM XP, mais le net send existe toujours. msg.exe y fonctionne pourtant.

20 votes

Je pensais qu'il manquait une option viable dans les réponses et je l'ai fournie. Rien de mal ici. Vous n'avez pas besoin de vous sentir forcé de faire quelque chose et je ne suis pas en train de dire que Boflynn a tort. J'ai simplement ajouté une autre option, ce qui est parfaitement acceptable pour les questions qui n'ont pas de réponse définitive. De plus, vous n'êtes probablement pas le seul à avoir cette question et d'autres peuvent ne pas vouloir utiliser VBScript pour n'importe quelle raison. C'est un site communautaire, pas seulement le vôtre :-)

132voto

boflynn Points 1654

Je créerais un fichier VBScript très simple et je l'appellerais en utilisant CScript pour analyser les paramètres de la ligne de commande.

Quelque chose comme ce qui suit a été enregistré dans MessageBox.vbs :

Set objArgs = WScript.Arguments
messageText = objArgs(0)
MsgBox messageText

Ce que vous appelleriez comme :

cscript MessageBox.vbs "This will be shown in a popup."

MsgBox référence si vous souhaitez emprunter cette voie.

0 votes

Merci cela devrait faire l'affaire, je vais créer un fichier et y écrire ces données, puis l'utiliser, puis le supprimer. cela devrait marcher :)

1 votes

Excellente réponse. De cette façon, vous pouvez avoir un contrôle total sur les icônes, les boutons et le titre de la boîte. De plus, lorsque vous enregistrez votre fichier quelque part dans le chemin d'accès, vous pouvez l'appeler depuis n'importe quel endroit. J'ai créé quelques fichiers pour des alertes avec des icônes différentes.

0 votes

Joli. BTW, vous n'avez pas besoin d'utiliser CScript, au moins dans Win10. Avec CScript, j'obtiens du texte supplémentaire dans l'invite de commande. Sans CScript, il n'y a que l'alerte, ce qui est génial.

87voto

Dave Webb Points 90034

Cela fera apparaître une autre fenêtre d'invite de commande :

START CMD /C "ECHO My Popup Message && PAUSE"

1 votes

Super ty ! je pourrais l'utiliser dans d'autres scripts :)

4 votes

Une meilleure option serait : start cmd /c "@echo off & mode con cols=18 lines=2 & echo My Popup Message & pause>nul" changer le cols=18 au nombre de caractères du message+2. Et le lines=2 à ce que le nombre de lignes soit de +1.

1 votes

Se débarrasser du PAUSE et utiliser cmd /k

86voto

Fowl Points 1517

Peut afficher un peu de flash, mais aucun fichier temporaire n'est nécessaire. Cela devrait fonctionner jusqu'à l'époque (IIRC) d'IE5.

mshta javascript:alert("Message\n\nMultiple\nLines\ntoo!");close();

N'oubliez pas de échappez à vos parenthèses si vous utilisez if :

if 1 == 1 (
   mshta javascript:alert^("1 is equal to 1, amazing."^);close^(^);
)

0 votes

Cela fonctionne parfaitement à partir de l'invite de commande, mais lorsque je le colle dans un fichier batch, j'obtiens cette erreur : close() was unexpected at this time .

0 votes

@eye_mew peut-être que tu dois les enlever. ^ caractères d'échappement dans un fichier bat

1 votes

Cela a parfaitement fonctionné pour moi à partir d'un fichier batch (je suis sous Windows 7) Peut-on exécuter n'importe quel Javascript de cette façon ? Comment renvoyer des valeurs au fichier de commandes ?

36voto

Essayez :

Msg * "insert your message here" 

Si vous utilisez la commande.com de Windows XP, cela ouvrira une boîte de messages.

Ouvrir une nouvelle fenêtre cmd n'est pas tout à fait ce que vous demandiez, je suppose. Vous pouvez également utiliser VBScript et utilisez-le avec votre fichier .bat. Vous l'ouvrirez à partir du fichier bat avec cette commande :

cd C:\"location of vbscript"

Cela permet de modifier le répertoire dans lequel command.com recherchera les fichiers, puis sur la ligne suivante :

"insert name of your vbscript here".vbs

Ensuite, vous créez un nouveau Bloc-notes tapez dans

<script type="text/vbscript">
    MsgBox "your text here"
</script>

Vous devez ensuite l'enregistrer en tant que fichier .vbs (en mettant " .vbs " à la fin du nom du fichier), l'enregistrer en tant que " All Files " dans la liste déroulante située sous le nom du fichier (pour qu'il ne soit pas enregistré en tant que .txt), puis cliquer sur Enregistrer !

3 votes

Vous n'avez pas besoin de la <script/> étiquette.

0 votes

?comment insérer de nouvelles lignes (lignes vides) dans le texte en utilisant -> MSG * <text>

0 votes

@ZEE Si vous utilisez seulement msg * il vous sera demandé de saisir un message suivi de ctrl-Z. Vous pouvez saisir ici des sauts de ligne qui apparaîtront dans votre message.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X