Ich möchte dem Benutzer mithilfe von CMD eine Nachricht anzeigen. Ich weiß, wie man das macht, indem ich eine .vbs (VBScript) -Datei erstelle und sie wie folgt aus CMD ausführe:
(echo MsgBox "Line 1" ^& vbCrLf ^& "Line 2",262192, "Title")> File.vbs
start File.vbs
Ich möchte die Nachricht jedoch anzeigen, ohne eine Datei direkt aus CMD zu erstellen. Möglicherweise mithilfe eines Befehls, um VBScripts direkt von CMD aus auszuführen.
msg
Befehl nach. Sie haben es möglicherweise nicht, wenn Sie eine Home Edition von Windows ausführen, aber Sie können es hinzufügen, indem Sie einfach msg.exe aus einer Pro-Installation kopieren und einfügen.Antworten:
Wie andere gesagt haben, gibt es keine Möglichkeit, dies nur mit cmd zu tun, aber obwohl dies der Titel der Frage ist, scheint es mir, dass der Teil ohne Datei für Sie wichtiger ist und dies unter bestimmten Umständen möglich sein könnte.
Mit Powershell sollte es möglich sein, Code ohne folgende Datei auszuführen:
VBS erlaubt nicht die direkte Ausführung von Code über cscript oder wscript, mshta jedoch. Sie können es folgendermaßen verwenden (wenn Sie mehrere Zeilen benötigen, verwenden Sie ':' als Trennzeichen):
Da es dh basiert, kann es von einigen GPO-Einschränkungen betroffen sein. Wenn Sie also die Wahl haben, ist Powershell wahrscheinlich die sicherere Wette
quelle
mshta
einigen Antivirensoftware als potenziell unerwünschter Prozess angesehen. Bei der Arbeit führte mein Versuch, es auszuführen, zu einem übereifrigen Unternehmensprodukt (SentinelOne), das meinen gesamten Computer unter Quarantäne stellte und aus dem Netzwerk entfernte.Wie von @wysiwyg vorgeschlagen, suchen Sie in Pro / Business-Versionen * von Windows nach dem
Msg
Befehl. Es ist in allen modernen Windows-Versionen verfügbar (mindestens bis XP). Führen Sie Folgendes aus, um dem aktuell angemeldeten Benutzer eine Nachricht anzuzeigen:Das Ergebnis sieht folgendermaßen aus:
Eine Überlegung bei diesem Befehl ist, dass Sie den Text der Titelleiste nicht anpassen können.
Sie können mehr über Msg auf TechNet erfahren .
* Wenn Sie eine Lösung benötigen, die unter allen Windows-Editionen, einschließlich Home , funktioniert , ist meiner Meinung nach die Ihnen bereits bekannte VBScript-Methode die einfachste Lösung für dieses Problem. Es funktioniert auf allen modernen Versionen und Editionen von Windows in ihrer Standardkonfiguration und ist einfach zu bedienen.
quelle
Ich brauchte heute etwas Ähnliches. Da ich keine externe Abhängigkeitslösung finden konnte, die mir gefiel, da ich nicht wirklich ein Fan von VBScript / Powershell bin, schrieb ich eine:
https://github.com/cubiclesoft/messagebox-windows
Die erzeugten Meldungsfelder sind modal zum aktuellen Konsolenfenster. Das heißt, der Benutzer kann nichts tun, bis er den Dialog schließt. Außerdem wird der Rückkehrcode des
MessageBox()
Anrufs an den Anrufer zurückgegeben, damit ein Skript auf die gedrückte Taste reagieren kann. Und natürlich unterstützt es die gesamte Palette der Optionen für dieMessageBox()
Win32-API.Das Hinzufügen einer ausführbaren 80-KB-Datei zu der Mischung ist möglicherweise nicht jedermanns Sache. Es ist jedoch statisch mit der VC ++ - Laufzeit verknüpft und unterstützt Unicode, was erklärt, warum die Datei angesichts der minimalistischen Funktionsweise so groß ist. Und es gibt ein kleines Problem, dass es nicht einfach ist, Zeilenumbrüche über die Befehlszeile zu übergeben, um mehrzeilige Nachrichten anzuzeigen. Ein kleiner Vorteil ist, dass der Dialog in kürzerer Wanduhrzeit angezeigt wird als bei allen anderen bisher vorgestellten Lösungen.
Wenn die Dateigröße keine Rolle spielt und Dialoge eine zu "in your face" Benutzererfahrung erzeugen und / oder keine Benutzerinteraktion erfordern, bin ich natürlich auch auf dieses raffinierte Projekt gestoßen:
https://www.paralint.com/projects/notifu/
Hiermit wird mithilfe von IUserNotification eine Popup- Sprechblase im Statusbenachrichtigungsbereich des Bildschirms angezeigt . Der Nachteil ist, dass die ausführbare Notifu-Datei nur knapp 240 KB groß ist. Ein weiteres unglückliches Beispiel dafür, dass COM unnötiges Aufblähen verursacht und mich wünscht, es gäbe eine einfache, leichte API für diese Funktion.
Für etwas Plattformübergreifendes gibt es Zenität. Es ist hauptsächlich für Linux, aber es gibt auch Mac- und Windows-Ports. Der Windows-Port von Zenity ist über 1 MB groß, da GTK ziemlich aufgebläht ist.
quelle
Ich habe eine Möglichkeit, dies mit cmd zu tun, aber es enthält im Grunde eine Datei, aber die Datei wird sofort gelöscht, nachdem die vbs ausgeführt wurde. Also ist es nicht wirklich. Du kannst tun :
Typ + Symbol + Aktion ist hier nur eine grundlegende vbs, als Referenz. https://therevisionist.org/wp-content/uploads/2016/03/vbscript_msgbox_chart-e1458059002411.jpg?x47750 Der Code, den ich Ihnen gezeigt habe, erstellt eine Datei mit VBS-Code und wird dann mit cscript ausgeführt löscht die Datei nach ihrer Ausführung, sodass sie so aussieht, als ob sie von der cmd-Eingabeaufforderung aufgerufen wurde. Um es so aussehen zu lassen, verwenden Sie einfach @echo aus. Hoffe das hat geholfen!
quelle
Additionaly, mit einem externen (nicht-native Windows) ausführbare Datei , gibt es
Wenn Sie Zugriff auf einen VB6-Compiler haben, erzeugt dieser Einzeiler eine ausführbare 5.5k-Datei:
quelle