Gostaria de exibir uma mensagem para o usuário usando o CMD. A maneira que sei fazer isso é criando um arquivo .vbs (VBScript) e execute-o no CMD desta maneira:
(echo MsgBox "Line 1" ^& vbCrLf ^& "Line 2",262192, "Title")> File.vbs
start File.vbs
Mas o que eu quero fazer é exibir a mensagem sem criar nenhum arquivo diretamente do CMD. Talvez usando um comando para executar VBScripts diretamente do CMD.
windows
command-line
vbscript
Bita
fonte
fonte
msg
comando. Você pode não a ter se estiver executando uma edição Home do Windows, mas pode adicioná-la apenas copiando e colando o msg.exe de uma instalação do Pro.Respostas:
Como outros disseram, não há como fazer isso puramente com o cmd, mas, embora esse seja o título da pergunta, parece-me que a parte sem arquivo é mais importante para você e, em certas circunstâncias, isso é possível.
Com o PowerShell, deve ser possível executar o código sem nenhum arquivo como este:
O VBS não permite a execução direta de código via cscript ou wscript, mas o mshta permite. Você pode usá-lo assim (se precisar de várias linhas, use ':' como um delimitador):
Como ele é baseado, ele pode ser afetado por algumas restrições de GPO; portanto, se você tiver a opção PowerShell, provavelmente é a aposta mais segura
fonte
mshta
, alguns softwares antivírus consideram um processo potencialmente indesejado. No trabalho, minha tentativa de executá-lo resultou em um produto corporativo excessivamente zeloso (SentinelOne) para colocar em quarentena minha máquina inteira e removê-la da rede.Conforme sugerido por @wysiwyg, nas versões Pro / Business * do Windows, você procura o
Msg
comando. Está disponível em todas as versões modernas do Windows (pelo menos no XP). Para exibir uma mensagem para o usuário conectado no momento, execute o seguinte:O resultado fica assim:
Uma consideração com este comando é que você não pode personalizar o texto da barra de título.
Você pode aprender mais sobre Msg no TechNet .
* Se você precisar de uma solução que funcione em todas as edições do Windows, incluindo a Home , na minha opinião, o método VBScript que você já conhece é a solução mais simples para esse problema. Ele funciona em todas as versões e edições modernas do Windows em sua configuração padrão e é fácil de usar.
fonte
Eu precisava de algo semelhante a isso hoje. Como não consegui encontrar uma solução de dependência externa de que gostei, já que não sou realmente fã de VBScript / Powershell, fui em frente e escrevi uma:
https://github.com/cubiclesoft/messagebox-windows
As caixas de mensagem produzidas são modais para a janela atual do console. Ou seja, o usuário não pode fazer nada até fechar a caixa de diálogo. Além disso, o código de retorno da
MessageBox()
chamada é retornado ao chamador para que um script possa reagir a qualquer botão pressionado. E, é claro, ele suporta toda a gama de opções para aMessageBox()
API do Win32.Adicionar um executável de 80 KB à mistura pode não ser a xícara de chá de todos. No entanto, ele está estaticamente vinculado ao tempo de execução do VC ++ e suporta Unicode, o que explica por que o arquivo é tão grande, dada a natureza minimalista do que faz. E há um pequeno problema de não conseguir passar facilmente novas linhas da linha de comando para exibir mensagens de várias linhas. Em um ponto positivo, ele exibe o diálogo em menos tempo do que qualquer outra solução apresentada até o momento.
Obviamente, se o tamanho do arquivo não importa e as caixas de diálogo criam uma experiência do usuário muito "na sua cara" e / ou não exigem interação do usuário, eu também me deparei com este projeto bacana:
https://www.paralint.com/projects/notifu/
Que exibe um balão pop-up na área de notificação de status da tela usando IUserNotification . A desvantagem é que o executável do Notifu executa apenas 240KB. Outro exemplo infeliz que o COM cria inchaço desnecessário e me deixa desejando que houvesse uma API simples e leve para o recurso.
Para algo multiplataforma, há zenidade. É principalmente para Linux, mas também existem portas para Mac e Windows. A porta do zenity para Windows tem mais de 1 MB de tamanho porque, bem, o GTK é bastante inchado.
fonte
Eu tenho uma maneira de fazer isso com o cmd, mas basicamente inclui um arquivo, mas o arquivo é excluído instantaneamente após a execução do vbs. Então não é verdade. Você pode fazer :
Digite + Icon + Action é apenas vbs básico, para uma referência, aqui. https://therevisionist.org/wp-content/uploads/2016/03/vbscript_msgbox_chart-e1458059002411.jpg?x47750 O código que mostrei para você cria um arquivo com código VBS e, em seguida, executa-o usando cscript. exclui o arquivo depois de executado, fazendo com que pareça ter sido chamado pelo prompt do cmd. Para torná-lo assim, basta usar @echo off. Espero que isso tenha ajudado!
fonte
Além disso, com um executável externo (Windows não nativo) , há
Se você tiver acesso a um compilador VB6, esse liner produz um executável de 5.5k:
fonte