как вы можете создавать всплывающие сообщения в пакетном скрипте?

<p>мне нужно знать, как создавать всплывающие сообщения в пакетных сценариях<strong> без </strong>с использованием vbscript или kixtart или любого другого внешнего языка сценариев/программирования .. я понятия не имею об этом ... не было даже отправной точки . я знаю о <code>net send</code>, но служба messenger отключена в моей текущей среде.</p>

<p>что касается ответа littlebobbytable - net send не работает в vista или windows 7. его заменил msg.exe</p><p>существует грубое решение, которое работает во всех версиях windows. необработанное всплывающее сообщение можно отправить, запустив новое окно cmd.exe, которое закрывается после нажатия клавиши.</p><pre><code>start "" cmd /c "echo hello world!&echo(&pause" </code></pre><p>если вы хотите, чтобы ваш сценарий приостанавливался до тех пор, пока окно сообщения не будет закрыто, вы можете добавить параметр/wait.</p><pre><code>start "" /wait cmd /c "echo hello world!&echo(&pause" </code></pre>

<pre><code>msg * "enter your message" </code></pre><p>это помогает?</p>

<p>вы можете воспользоваться <code>cscript.exe</code> или <code>wscript.exe</code> (которые присутствовали в каждой версии windows начиная с windows 95), например, так:</p><pre><code>echo msgbox "hey! here is a message!" > %tmp%\tmp.vbs cscript /nologo %tmp%\tmp.vbs del %tmp%\tmp.vbs </code></pre><p>или же</p><pre><code>echo msgbox "hey! here is a message!" > %tmp%\tmp.vbs wscript %tmp%\tmp.vbs del %tmp%\tmp.vbs </code></pre><p>вы также можете выбрать более настраиваемую команду <code>popup</code>. этот пример дает вам 10-секундное окно, чтобы нажать ok, прежде чем истечет время ожидания:</p><pre><code>echo set wshshell = wscript.createobject("wscript.shell") > %tmp%\tmp.vbs echo wscript.quit (wshshell.popup( "you have 10 seconds to click 'ok'." ,10 ,"click ok", 0)) >> %tmp%\tmp.vbs cscript /nologo %tmp%\tmp.vbs if %errorlevel%==1 ( echo you clicked ok ) else ( echo the message timed out. ) del %tmp%\tmp.vbs </code></pre><p>в приведенном выше контексте оба параметра <code>cscript</code> и <code>wscript</code> будут действовать одинаково. при вызове из пакетного файла боты <code>cscript</code> и <code>wscript</code> будут приостанавливать пакетный файл до тех пор, пока не завершат свой сценарий, а затем разрешат файлу продолжить.</p><p>при вызове вручную из команды prompt <code>cscript</code> не вернет управление команде prompt до тех пор, пока она не будет завершена, в то время как <code>wscript</code> создаст отдельный поток для выполнения своего сценария, вернув управление команде prompt даже до того, как сценарий будет завершен.</p><p>другие методы, обсуждаемые в этом потоке, не приводят к приостановке выполнения командных файлов в ожидании нажатия на сообщение. ваш выбор будет продиктован вашими потребностями.</p><p><strong>примечание:</strong> используя этот метод, доступны несколько конфигураций кнопок и значков для покрытия различных запросов <strong>yes/no/cancel/abort/retry</strong> к пользователю: <a href="https://technet.microsoft.com/en-us/library/ee156593.aspx">https://technet.microsoft.com/ ru-ru/library/ee156593.aspx</a> </p><p> <a href="https://i.stack.imgur.com/toubf.gif"> <img src="https://i.stack.imgur.com/toubf.gif" alt="enter image description here"> </a> </p>

<p>msg * привет, мир</p><p>работает для меня..</p>

<p>это легко сделать сообщение, вот как:</p><p>сначала откройте блокнот и введите:</p><pre><code>msg "message",0,"title" </code></pre><p>и сохраните его как message.vbs.</p><p>теперь в вашем типе командного файла:</p><pre><code>message.vbs %* </code></pre>

<pre><code>@echo off title message echo what's the password? set/p "pass=>" if not %pass% == password goto fail msg *correct: correct password!!! goto end :fail msg *wrong: wrong password!!! :end </code></pre>

<h2> <code>msg * message goes here</code></h2><p>этот метод очень прост и легок и должен работать в любом командном файле, я верю. единственным «недостатком» этого метода является то, что он может показывать только 1 сообщение одновременно, если есть более одного сообщения, он будет показывать каждое сообщение за другим, в зависимости от порядка их размещения в коде. также убедитесь, что в вашем пакетном файле есть другой оператор зацикливания или непрерывный оператор, иначе он закроется автоматически, и появится только это сообщение. если вам нужен «тихий» оператор фонового зацикливания, вот он:</p><h2> <code>pause >nul</code></h2><p>это должно поддерживать его работу, но затем он закроется после нажатия кнопки.</p><p>также, чтобы все команды были тихими при запуске, чтобы они просто запускались и не отображали, что они были введены в файл, просто поместите следующую строку в начало командного файла:</p><h2> <code>@echo off</code></h2><p>я надеюсь, что все эти советы помогли!</p>

<p>лучше всего использовать <code>net send</code>, как описано на <a href="http://www.robvanderwoude.com/usermessages.php">сайте роба ван дер вуде</a> . </p><p>в противном случае вам нужно будет использовать внешнюю программу сценариев. пакетные файлы действительно предназначены для отправки сообщений через <code>echo</code>.</p>

<p>это очень просто, потому что я создал пару строк кода, который сделает это для вас</p><p>поэтому установите переменную как msg, а затем используйте этот код. это всплывающее окно в окне сообщения vbs.</p><p>код:</p><pre><code>@echo off echo %msg% >vbs.txt copy vbs.txt vbs.vbs del vbs.txt start vbs.vbs timeout /t 1 del vbs.vbs cls </code></pre><p>это просто то, что я придумал, оно должно работать для большинства ваших потребностей в сообщениях, и оно также работает с пробелами в отличие от некоторых пакетных скриптов.</p>