Я хотел бы отобразить сообщение для пользователя с помощью CMD. Я знаю, как это сделать, создав файл .vbs (VBScript) и выполнив его из CMD следующим образом:
(echo MsgBox "Line 1" ^& vbCrLf ^& "Line 2",262192, "Title")> File.vbs
start File.vbs
Но я хочу отобразить сообщение, не создавая никакого файла, прямо из CMD. Может быть, с помощью команды для запуска VBScripts прямо из CMD.
msg
команду. У вас может не быть этого, если вы используете домашнюю версию Windows, но вы можете добавить ее, просто скопировав и вставив msg.exe из установки Pro.Ответы:
Как уже говорили другие, нет способа сделать это чисто с помощью cmd, но, хотя это и есть название вопроса, мне кажется, что часть без файла более важна для вас, и при определенных обстоятельствах это может быть возможно.
С PowerShell должно быть возможно запустить код без любого файла, как это:
VBS не разрешает прямое выполнение кода через cscript или wscript, но mshta разрешает. Вы можете использовать его следующим образом (если вам нужно несколько строк, используйте «:» в качестве разделителя):
Так как он базируется, то есть на него могут повлиять некоторые ограничения gpo, поэтому, если у вас есть выбор, то PowerShell, вероятно, является более безопасной ставкой.
источник
mshta
, некоторые антивирусные программы считают это потенциально нежелательным процессом. На работе моя попытка запустить его привела к чрезмерно усердному корпоративному продукту (SentinelOne), который изолировал всю мою машину и удалил ее из сети.Как подсказывает @wysiwyg, в версиях Windows для Pro / Business * вы ищете
Msg
команду. Он доступен во всех современных версиях Windows (по крайней мере, в XP). Чтобы отобразить сообщение для текущего пользователя, выполнившего следующее:Результат выглядит так:
Одним из соображений, связанных с этой командой, является то, что вы не можете настраивать текст Titlebar.
Вы можете узнать больше о Msg на TechNet .
* Если вам нужно решение, которое работает во всех выпусках Windows, включая Home , на мой взгляд, метод VBScript, который вам уже известен, является самым простым решением этой проблемы. Он работает на всех современных версиях и выпусках Windows в конфигурации по умолчанию и прост в использовании.
источник
Мне нужно что-то похожее на это сегодня. Так как я не смог найти решение для внешних зависимостей, которое мне понравилось, так как я на самом деле не фанат VBScript / Powershell, я решил написать следующее:
https://github.com/cubiclesoft/messagebox-windows
Окна сообщений, которые он создает, являются модальными для текущего окна консоли. То есть пользователь не может ничего сделать, пока не закроет диалог. Кроме того, код возврата от
MessageBox()
вызова возвращается вызывающей стороне, чтобы скрипт мог реагировать на нажатие любой кнопки. И, конечно же, он поддерживает полный набор параметровMessageBox()
Win32 API.Добавление исполняемого файла размером 80 КБ может не быть чашей чая для всех. Тем не менее, он статически связан с средой выполнения VC ++ и поддерживает Unicode, что объясняет, почему файл такой большой, учитывая минималистический характер его работы. Кроме того, существует небольшая проблема, заключающаяся в невозможности простого перехода на новые строки из командной строки для отображения многострочных сообщений. С другой стороны, он отображает диалоговое окно за меньшее время, чем любое другое решение, представленное до сих пор.
Конечно, если размер файла не имеет значения, а диалоги создают слишком «пользовательский» интерфейс и / или не требуют взаимодействия с пользователем, я также столкнулся с этим изящным проектом:
https://www.paralint.com/projects/notifu/
Который отображает всплывающую подсказку в области уведомлений о состоянии экрана с помощью IUserNotification . Недостатком является то, что исполняемый файл Notifu работает всего лишь 240 КБ. Еще один прискорбный пример того, что COM создает ненужный раздув и оставляет меня желать, чтобы был простой и легкий API для этой функции.
Для чего-то кроссплатформенного есть zenity. В основном это для Linux, но есть порты Mac и Windows. Размер Windows-порта zenity превышает 1 МБ, потому что GTK довольно раздутый.
источник
У меня есть способ сделать это с помощью cmd, но он в основном включает в себя файл, но файл удаляется сразу после выполнения VBS. Так что на самом деле это не так. Ты можешь сделать :
Type + Icon + Action - это просто основные VBS, для справки, здесь. https://therevisionist.org/wp-content/uploads/2016/03/vbscript_msgbox_chart-e1458059002411.jpg?x47750 Код, который я показал вам, создает файл с кодом VBS, затем он исполняется с использованием cscript, затем удаляет файл после его выполнения, чтобы он выглядел так, как будто его вызвал запрос cmd. Чтобы это выглядело больше, просто используйте @echo off. Надеюсь, это помогло!
источник
Кроме того, с внешним (не родной Windows) исполняемым файлом , есть
Если у вас есть доступ к компилятору VB6, то этот однострочник создает исполняемый файл 5.5k:
источник