¿Hay alguna manera de mostrar un cuadro de mensaje desde un archivo por lotes (similar a cómo xmessage
se puede usar desde bash-scripts en Linux)?
153
¿Hay alguna manera de mostrar un cuadro de mensaje desde un archivo por lotes (similar a cómo xmessage
se puede usar desde bash-scripts en Linux)?
Respuestas:
Haría un archivo VBScript muy simple y lo llamaría usando CScript para analizar los parámetros de la línea de comandos.
Algo como lo siguiente guardado en
MessageBox.vbs
:Que llamarías como:
MsgBox
referencia si está interesado en seguir esta ruta.fuente
En primer lugar, DOS no tiene nada que ver con eso, probablemente desee una solución de línea de comandos de Windows (de nuevo: no DOS, Windows puro, simplemente no una ventana, sino una consola).
Puede usar el método VBScript proporcionado por boflynn o puede usar mal
net send
omsg
.net send
funciona solo en versiones anteriores de Windows:Sin embargo, esto también depende del servicio de Messenger que se ejecute.
Para versiones más recientes (XP y posteriores, aparentemente):
Cabe señalar que un cuadro de mensaje enviado usando
msg.exe
solo durará 60 segundos. Sin embargo, esto puede anularse con el/time:xx
interruptor.fuente
Puede mostrar un poco de flash, pero no se requieren archivos temporales. Debería funcionar desde algún lugar de la era IE5 (IIRC).
No olvides escapar de tus paréntesis si estás usando
if
:fuente
close() was unexpected at this time
.^
caracteres de escape en un archivo batEsto abrirá otra ventana de símbolo del sistema:
fuente
start cmd /c "@echo off & mode con cols=18 lines=2 & echo My Popup Message & pause>nul"
cambiarcols=18
la cantidad de caracteres en el mensaje + 2. Y ellines=2
a cualquiera que sea la cantidad de líneas es + 1.cmd /k
Tratar :
Si está utilizando command.com de Windows XP, se abrirá un cuadro de mensaje.
Me parece que abrir una nueva ventana de cmd no es exactamente lo que pedías. También puede usar VBScript , y usar esto con su archivo .bat. Lo abriría desde el archivo bat con este comando:
Lo que esto hace es cambiar el directorio command.com buscará archivos, luego en la siguiente línea:
Luego cree un nuevo documento de Bloc de notas , escriba
Luego lo guardaría como un archivo .vbs (colocando ".vbs" al final del nombre del archivo), guárdelo como "Todos los archivos" en el cuadro desplegable debajo del nombre del archivo (para que no se guarde como .txt ), luego haga clic en Guardar!
fuente
<script/>
etiqueta.msg *
se le pedirá que ingrese un mensaje seguido de ctrl-Z. Puede ingresar saltos de línea aquí que aparecerán en su mensaje.Pocas formas más.
1) El más geek y más hackeado: utiliza IEXPRESS para crear un pequeño ejecutable que creará una ventana emergente con un solo botón ( puede crear dos tipos más de mensajes emergentes ). Funciona en CADA ventana de XP y superior:
2) Utilizando
MSHTA
. También funciona en todas las máquinas Windows desde XP y superiores (a pesar de que el OP no quiere lenguajes "externos", el JavaScript aquí está minimizado). Debe guardarse como.bat
:o en una línea:
o
o
3) Aquí está el
.bat/jscript
híbrido parametrizado (debe guardarse comobat
). Nuevamente usa JavaScript a pesar de la solicitud de OP, pero como es un murciélago, puede llamarse como un archivo bat sin preocupaciones. Utiliza POPUP que permite un poco más de control que el MSGBOX más popular . Utiliza WSH, pero no MSHTA como en el ejemplo anterior.4) y un
jscript.net/.bat
híbrido (debe guardarse como.bat
). Esta vez utiliza.NET
y compila un pequeño.exe
archivo que podría eliminarse:5) y al final una sola llamada a powershell que crea una ventana emergente (se puede llamar desde la línea de comandos o desde un lote si está instalado powershell):
6) Y el enfoque de Dbenham visto aquí
7 ) Para las notificaciones de la bandeja del sistema, puede intentar esto :
fuente
De esta manera, su archivo por lotes creará un script VBS y mostrará una ventana emergente. Después de que se ejecute, el archivo por lotes eliminará ese archivo intermedio.
La ventaja de usar MSGBOX es que es realmente personalizable (cambiar el título, el ícono, etc.) mientras que MSG.exe no lo es tanto.
fuente
Aquí hay una variante de PowerShell que no requiere cargar ensamblajes antes de crear la ventana, sin embargo, funciona notablemente más lento (~ + 50%) que el comando PowerShell MessageBox publicado aquí por @npocmaka:
Puede cambiar el último parámetro de "0x0" a un valor a continuación para mostrar iconos en el cuadro de diálogo (consulte Método emergente para obtener más información):
0x10 Detener
0x20 Signo de interrogación
0x30 Signo de exclamación
0x40 Signo de información
Adaptado del artículo de Microsoft TechNet PowerTip: Use PowerShell para mostrar la ventana emergente .
fuente
–Puedes escribir cualquier número de 0,1,2,3,4 en lugar de 0 (antes del símbolo '+') y aquí está el significado de cada número:
–Puedes escribir cualquier número de 16,32,48,64 en lugar de 16 (después del símbolo '+') y aquí está el significado de cada número:
fuente
Mensaje * "inserte su mensaje aquí"
funciona bien, solo guarde como un archivo .bat en el bloc de notas o asegúrese de que el formato esté configurado en "todos los archivos"
fuente
msg %SESSIONNAME% msg
Este mensaje espera para siempre hasta que se hace clic en Aceptar (dura solo un minuto de forma predeterminada) y funciona bien en Windows 8.1
fuente
msg * /time:0 /w <C:\Somewhere\Message.txt
donde en el archivo hay texto normal (que contiene CrLf's).Para hacer esto, debe tener un pequeño programa que muestre un cuadro de mensaje y ejecutarlo desde su archivo por lotes.
Sin embargo, puede abrir una ventana de consola que muestre un mensaje, pero no es posible obtener un cuadro de mensaje GUI usando cmd.exe y solo amigos, AFAIK.
fuente
Utilizo una utilidad llamada msgbox.exe desde aquí: http://www.paulsadowski.com/WSH/cmdprogs.htm
fuente
Puedes usar Zenity . Zenity permite la ejecución de cuadros de diálogo en scripts de línea de comandos y shell. También se puede encontrar más información en Wikipedia .
Es multiplataforma: aquí se puede encontrar un instalador de Windows para Windows .
fuente
Siguiendo la respuesta de @ Fowl, puede mejorarlo con un tiempo de espera que solo aparece durante 10 segundos usando lo siguiente:
Ver aquí para más detalles.
fuente
Puede invocar la función dll desde user32.dll, creo que algo así
Escribiéndolo desde mi teléfono, no me juzguen ... de lo contrario vincularía las banderas adicionales.
fuente
rundll32.exe user32.dll,MessageBoxA X
mostrar un cuadro de mensaje con X como título cuando lo hago en el cuadro Ejecutar. No importa lo que haga X, no puedo hacer que se interprete como múltiples parámetros: todo entra en el título. Entoncesrundll32.exe user32.dll,MessageBoxA (0, "MyTitle", "MyText", 0)
muestra un cuadro de mensaje con un título de(0, "MyTitle", "MyText", 0)
Pero no puedo hacer que funcione EN TODO desde la línea de comandos, solo desde el cuadro Ejecutar. En la línea de comando no hace nada en absoluto. ¿Funciona seguro desde una línea de comandos o desde un archivo por lotes o solo desde el cuadro Ejecutar?msg * /server:127.0.0.1 Escriba su mensaje aquí
fuente
where msg
regresaC:\Windows\System32\msg.exe
. Creo que estás pensandonet send
Esta aplicación puede hacer eso si convierte (ajusta) sus archivos por lotes en archivos ejecutables.
Cuadro de mensaje simple
Mensaje de error
Cancelar Intentar nuevamente Cuadro de mensaje
4) Cuadro de mensaje "Nunca más me preguntes"
fuente
Una mejor opción
set my_message=Hello world
&& start cmd /c "@echo off & mode con cols=15 lines=2 & echo %my_message% & pause>nul"
Descripción:
lines=
cantidad de líneas, más 1cols=
cantidad de caracteres en el mensaje, más 3 (Sin embargo, el mínimo debe ser15
)cols
Versión auto calculada :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"
fuente
start cmd /c "@echo off & mode con cols=18 lines=2 & echo My Popup Message & pause>nul"
). El tuyo no. Repite el mensaje, pero no puede establecer el tamaño de la ventana que regresaThe screen cannot be set to the number of lines and columns specified.
al menos en mi Windows 7.x
en el directorio actual o no le importe perderlo.x
, su comando simplemente falla. No me lo agradezcas y solo arregla tu código. Ni siquiera necesita usar una sola línea. Y si cree que su código es tan bueno, publíquelo en Code Review .Aquí está mi script por lotes que reuní en base a las buenas respuestas aquí y en otras publicaciones
Puede configurar el tiempo de espera del título e incluso dormir para programarlo para esta última & \ n para una nueva línea
Póngale el nombre popup.bat y póngalo en su carpeta de ruta de Windows para trabajar globalmente en su PC
Por ejemplo
popup Line 1\nLine 2
, producirá un cuadro emergente de 2 líneas (tipopopup /?
de uso)Aqui esta el codigo
fuente
solo necesita aparecer cuando está dentro de una máquina virtual, por lo que técnicamente, debería haber algún código como:
fuente