Me gustaría mostrar un mensaje al usuario utilizando CMD. La forma en que sé hacerlo es creando un archivo .vbs (VBScript) y ejecutándolo desde CMD de esta manera:
(echo MsgBox "Line 1" ^& vbCrLf ^& "Line 2",262192, "Title")> File.vbs
start File.vbs
Pero lo que quiero hacer es mostrar el mensaje sin crear ningún archivo, directamente desde CMD. Quizás utilizando un comando para ejecutar VBScripts directamente desde CMD.
msg
comando. Es posible que no lo tenga si está ejecutando una edición Home de Windows, pero puede agregarlo simplemente copiando y pegando msg.exe desde una instalación Pro.Respuestas:
Como otros han dicho, no hay forma de hacer esto solo con cmd, pero aunque ese es el título de la pregunta, me parece que la parte sin archivo es más importante para usted y, en ciertas circunstancias, esto podría ser posible.
Con powershell, debería ser posible ejecutar código sin ningún archivo como este:
VBS no permite la ejecución directa de código a través de cscript o wscript, pero mshta sí. Puede usarlo así (si necesita varias líneas, use ':' como delimitador):
Como está basado, es posible que se vea afectado por algunas restricciones de gpo, por lo que si tiene la opción, PowerShell es probablemente la apuesta más segura
fuente
mshta
, algunos programas antivirus lo consideran un proceso potencialmente no deseado. En el trabajo, mi intento de ejecutarlo resultó en un producto empresarial demasiado entusiasta (SentinelOne) para poner en cuarentena toda mi máquina y eliminarla de la red.Como lo sugiere @wysiwyg, en las versiones Pro / Business * de Windows está buscando el
Msg
comando. Está disponible en todas las versiones modernas de Windows (al menos desde XP). Para mostrar un mensaje al usuario actualmente conectado, ejecute lo siguiente:El resultado se ve así:
Una consideración con este comando es que no puede personalizar el texto de la barra de título.
Puede obtener más información sobre Msg en TechNet .
* Si necesita una solución que funcione en todas las ediciones de Windows, incluida Home , en mi opinión, el método VBScript que ya conoce es la solución más simple para este problema. Funciona en todas las versiones y ediciones modernas de Windows en su configuración predeterminada, y es fácil de usar.
fuente
Necesitaba algo similar a esto hoy. Como no pude encontrar una solución de dependencia externa que me gustó ya que realmente no soy fanático de VBScript / Powershell, seguí adelante y escribí una:
https://github.com/cubiclesoft/messagebox-windows
Los cuadros de mensaje que produce son modales a la ventana de consola actual. Es decir, el usuario no puede hacer nada hasta que cierre el diálogo. Además, el código de retorno de la
MessageBox()
llamada se devuelve a la persona que llama para que un script pueda reaccionar a cualquier botón que se haya presionado. Y, por supuesto, es compatible con la gama completa de opciones para laMessageBox()
API Win32.Agregar un ejecutable de 80 KB a la mezcla podría no ser la taza de té de todos. Sin embargo, está estáticamente vinculado con el tiempo de ejecución de VC ++ y es compatible con Unicode, lo que explica por qué el archivo es tan grande dada la naturaleza minimalista de lo que hace. Y hay un problema menor de no poder pasar fácilmente nuevas líneas desde la línea de comandos para mostrar mensajes de varias líneas. Por otro lado, muestra el diálogo en menos tiempo de reloj de pared que cualquiera de las otras soluciones presentadas hasta ahora.
Por supuesto, si el tamaño del archivo no importa y los cuadros de diálogo crean una experiencia de usuario demasiado "directa" y / o no requieren la interacción del usuario, también me encontré con este ingenioso proyecto:
https://www.paralint.com/projects/notifu/
Que muestra un globo emergente en el área de notificación de estado de la pantalla usando IUserNotification . La desventaja es que el ejecutable de Notifu corre apenas 240KB. Otro ejemplo desafortunado de que COM crea una hinchazón innecesaria y me hace desear que haya una API simple y liviana para la función.
Para algo multiplataforma, hay zenity. Es principalmente para Linux, pero también hay puertos para Mac y Windows. El puerto zenity de Windows tiene un tamaño superior a 1 MB porque, bueno, GTK está bastante hinchado.
fuente
Tengo una manera de hacer esto con cmd, pero básicamente incluye un archivo, pero el archivo se elimina instantáneamente después de que se ejecuta el vbs. Entonces no es realmente. Tu puedes hacer :
Type + Icon + Action es solo vbs básico, como referencia, aquí. https://therevisionist.org/wp-content/uploads/2016/03/vbscript_msgbox_chart-e1458059002411.jpg?x47750 El código que le mostré hace un archivo que tiene código VBS, luego lo ejecuta usando cscript, luego elimina el archivo después de que se ejecute, haciendo que parezca que ha sido convocado por el indicador cmd. Para que se vea así más, simplemente use @echo off. Espero que esto haya ayudado!
fuente
Además, con un ejecutable externo (Windows no nativo) , hay
Si tiene acceso a un compilador VB6, este one-liner produce un ejecutable de 5.5k:
fuente