Existe-t-il un moyen d'afficher une boîte de message à partir d'un fichier batch (similaire à la façon dont xmessage
peut être utilisé à partir de scripts bash sous Linux)?
153
Existe-t-il un moyen d'afficher une boîte de message à partir d'un fichier batch (similaire à la façon dont xmessage
peut être utilisé à partir de scripts bash sous Linux)?
Réponses:
Je créerais un fichier VBScript très simple et l'appellerais en utilisant CScript pour analyser les paramètres de ligne de commande.
Quelque chose comme ce qui suit enregistré dans
MessageBox.vbs
:Ce que vous appelleriez comme:
MsgBox
référence si vous êtes intéressé par cette voie.la source
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, Windows pur, mais pas une fenêtre, mais une console).
Vous pouvez soit utiliser la méthode VBScript fournie par boflynn, soit mal utiliser
net send
oumsg
.net send
fonctionne uniquement sur les anciennes versions de Windows:Cela dépend également du service Messenger à exécuter.
Pour les versions plus récentes (XP et versions ultérieures, apparemment):
Il est à noter qu'une boîte de message envoyée en utilisant
msg.exe
ne durera que 60 secondes. Cela peut cependant être annulé avec le/time:xx
commutateur.la source
Peut afficher un peu de flash, mais aucun fichier temporaire n'est requis. Devrait fonctionner jusqu'à quelque part dans l'ère (IIRC) IE5.
N'oubliez pas d' échapper vos parenthèses si vous utilisez
if
:la source
close() was unexpected at this time
.^
caractères d'échappement dans un fichier chauve-sourisCela fera apparaître une autre fenêtre d'invite de commandes:
la source
start cmd /c "@echo off & mode con cols=18 lines=2 & echo My Popup Message & pause>nul"
remplacez lecols=18
par le nombre de caractères dans le message + 2. Et lelines=2
à quel que soit le nombre de lignes est + 1.cmd /k
Essayez:
Si vous utilisez command.com de Windows XP, cela ouvrira une boîte de message.
Ouvrir une nouvelle fenêtre cmd n'est pas tout à fait ce que vous demandiez, je suppose. Vous pouvez également utiliser VBScript et l'utiliser avec votre fichier .bat. Vous l'ouvririez à partir du fichier bat avec cette commande:
Cela change le répertoire command.com recherchera les fichiers à partir de, puis sur la ligne suivante:
Ensuite, vous créez un nouveau document Bloc-notes , tapez
Vous enregistrez ensuite ceci en tant que fichier .vbs (en mettant «.vbs» à la fin du nom de fichier), enregistrez-le sous «Tous les fichiers» dans la liste déroulante sous le nom du fichier (il ne sera donc pas enregistré sous .txt ), puis cliquez sur Enregistrer!
la source
<script/>
étiquette.msg *
vous serez invité à entrer un message suivi de ctrl-Z. Vous pouvez saisir ici des sauts de ligne qui apparaîtront dans votre message.Quelques autres moyens.
1) Le plus geek et le plus piraté - il utilise IEXPRESS pour créer un petit exe qui créera un pop-up avec un seul bouton ( il peut créer deux autres types de messages pop-up ). Fonctionne sur TOUTES les fenêtres de XP et plus:
2) Utilisation
MSHTA
. Fonctionne également sur toutes les machines Windows à partir de XP et plus (malgré le fait que l'OP ne veut pas de langues "externes", le JavaScript est ici minimisé). Doit être enregistré sous.bat
:ou en une ligne:
ou
ou
3) Voici l'
.bat/jscript
hybride paramétré (doit être enregistré sousbat
). Il utilise à nouveau JavaScript malgré la requête OP, mais comme il s'agit d'une batte, elle peut être appelée comme un fichier bat sans soucis. Il utilise POPUP qui permet un peu plus de contrôle que le MSGBOX plus populaire . Il utilise WSH, mais pas MSHTA comme dans l'exemple ci-dessus.4) et un
jscript.net/.bat
hybride (doit être enregistré sous.bat
) .Cette fois, il utilise.NET
et compile un petit.exe
fichier qui pourrait être supprimé:5) et à la fin un seul appel à PowerShell qui crée un pop-up (peut être appelé à partir de la ligne de commande ou du batch si PowerShell est installé):
6) Et l'approche de dbenham vue ici
7 ) Pour les notifications de la barre d'état système, vous pouvez essayer ceci :
la source
De cette façon, votre fichier de commandes créera un script VBS et affichera une fenêtre contextuelle. Après son exécution, le fichier de commandes supprimera ce fichier intermédiaire.
L'avantage d'utiliser MSGBOX est qu'il est vraiment personnalisable (changer le titre, l'icône, etc.) alors que MSG.exe ne l'est pas autant.
la source
Voici une variante de PowerShell qui ne nécessite pas le chargement d'assemblys avant de créer la fenêtre, mais elle s'exécute nettement plus lentement (~ + 50%) que la commande PowerShell MessageBox publiée ici par @npocmaka:
Vous pouvez changer le dernier paramètre de "0x0" à une valeur ci-dessous pour afficher les icônes dans la boîte de dialogue (voir Méthode Popup pour plus d'informations):
0x10 Stop
0x20 Point d'interrogation
0x30 Point d'exclamation
0x40 Marque d'information
Adapté de l'article Microsoft TechNet PowerTip: utiliser PowerShell pour afficher la fenêtre contextuelle .
la source
–Vous pouvez écrire n'importe quel nombre de 0,1,2,3,4 au lieu de 0 (avant le symbole '+') et voici la signification de chaque nombre:
–Vous pouvez écrire n'importe quel nombre de 16,32,48,64 au lieu de 16 (après le symbole «+») et voici la signification de chaque nombre:
la source
Msg * "insérez votre message ici"
fonctionne bien, enregistrez simplement en tant que fichier .bat dans le bloc-notes ou assurez-vous que le format est défini sur "tous les fichiers"
la source
msg %SESSIONNAME% msg
Ce message attend indéfiniment jusqu'à ce que vous cliquiez sur OK (cela ne dure qu'une minute par défaut) et fonctionne correctement sous Windows 8.1
la source
msg * /time:0 /w <C:\Somewhere\Message.txt
où dans le fichier se trouve du texte normal (contenant des CrLf).Pour ce faire, vous devez avoir un petit programme qui affiche une boîte de message et l'exécute à partir de votre fichier de commandes.
Vous pouvez ouvrir une fenêtre de console qui affiche une invite, mais obtenir une boîte de message GUI en utilisant uniquement cmd.exe et amis n'est pas possible, AFAIK.
la source
J'utilise un utilitaire nommé msgbox.exe à partir d'ici: http://www.paulsadowski.com/WSH/cmdprogs.htm
la source
Vous pouvez utiliser Zenity . Zenity permet l'exécution de boîtes de dialogue dans les scripts de ligne de commande et shell. Plus d'informations peuvent également être trouvées sur Wikipedia .
Il est multiplateforme: un programme d'installation Windows pour Windows peut être trouvé ici .
la source
Suite à la réponse de @ Fowl, vous pouvez l'améliorer avec un délai d'attente pour n'apparaître que pendant 10 secondes en utilisant les éléments suivants:
Voir ici pour plus de détails.
la source
Vous pouvez appeler la fonction dll à partir de user32.dll je pense quelque chose comme
En le tapant depuis mon téléphone, ne me jugez pas ... sinon je lierais les drapeaux supplémentaires.
la source
rundll32.exe user32.dll,MessageBoxA X
afficher une boîte de message avec X comme titre lorsque je le fais dans la zone Exécuter. Peu importe ce que je fais de X, je ne peux pas le faire interpréter comme plusieurs paramètres - tout entre dans le titre. Donc,rundll32.exe user32.dll,MessageBoxA (0, "MyTitle", "MyText", 0)
affiche une boîte de message avec un titre de(0, "MyTitle", "MyText", 0)
Mais je ne peux pas le faire fonctionner DU TOUT à partir de la ligne de commande - uniquement à partir de la zone Exécuter. Sur la ligne de commande, cela ne fait rien du tout. Cela fonctionne-t-il à coup sûr à partir d'une ligne de commande ou d'un fichier de commandes ou uniquement à partir de la zone Exécuter?msg * /server:127.0.0.1 Tapez votre message ici
la source
where msg
retourneC:\Windows\System32\msg.exe
. Je pense que vous pensez ànet send
Cette application peut le faire si vous convertissez (enveloppez) vos fichiers batch en fichiers exécutables.
Boîte de message simple
Message d'erreur
Annuler Réessayer Messagebox
4) Messagebox "Ne plus jamais me demander"
la source
Une meilleure option
set my_message=Hello world
&& start cmd /c "@echo off & mode con cols=15 lines=2 & echo %my_message% & pause>nul"
Description:
lines=
nombre de lignes, plus 1cols=
nombre de caractères dans le message, plus 3 (Cependant, le minimum doit être15
)cols
Version calculée automatiquement :set my_message=Hello world
&& (echo %my_message%>EMPTY_FILE123 && FOR %? IN (EMPTY_FILE123 ) DO SET strlength=%~z? && del EMPTY_FILE123 ) && start cmd /c "@echo off && mode con lines=2 cols=%strlength% && echo %my_message% && pause>nul"
la source
start cmd /c "@echo off & mode con cols=18 lines=2 & echo My Popup Message & pause>nul"
). Le vôtre ne l'est pas. Il fait écho au message mais ne parvient pas à définir la taille de la fenêtre retournantThe screen cannot be set to the number of lines and columns specified.
au moins dans mon Windows 7.x
dans le répertoire courant ou que cela ne vous dérange pas de le perdre.x
, votre commande échoue tout simplement. Ne me remerciez pas et corrigez simplement votre code. Vous n'avez même pas besoin d'utiliser une doublure. Et si vous pensez que votre code est si bon, veuillez le publier dans Code Review .Voici mon script batch que j'ai mis en place sur la base des bonnes réponses ici et dans d'autres articles
Vous pouvez définir le délai d'expiration du titre et même mettre en veille pour le programmer pour ce dernier et \ n pour une nouvelle ligne
Nommez-le popup.bat et placez-le dans votre dossier de chemin Windows pour qu'il fonctionne globalement sur votre PC
Par exemple
popup Line 1\nLine 2
produira une boîte contextuelle de 2 lignes (tapezpopup /?
pour l'utilisation)Voici le code
la source
il doit SEULEMENT apparaître à l'intérieur d'une vm, donc techniquement, il devrait y avoir du code comme:
la source