Gibt es eine Möglichkeit, ein Meldungsfeld aus einer Batch-Datei anzuzeigen (ähnlich wie xmessage
bei Bash-Skripten unter Linux)?
153
Gibt es eine Möglichkeit, ein Meldungsfeld aus einer Batch-Datei anzuzeigen (ähnlich wie xmessage
bei Bash-Skripten unter Linux)?
Antworten:
Ich würde eine sehr einfache VBScript-Datei erstellen und sie mit CScript aufrufen, um die Befehlszeilenparameter zu analysieren.
So etwas wie das Folgende wurde gespeichert in
MessageBox.vbs
:Was du gerne nennen würdest:
MsgBox
Referenz, wenn Sie an dieser Route interessiert sind.quelle
Zunächst einmal hat DOS nichts damit zu tun, Sie möchten wahrscheinlich eine Windows-Befehlszeilenlösung (wieder: kein DOS, reines Windows, nur kein Fenster, sondern eine Konsole).
Sie können entweder die von boflynn bereitgestellte VBScript-Methode verwenden
net send
oder odermsg
.net send
funktioniert nur unter älteren Windows-Versionen:Dies hängt jedoch auch vom auszuführenden Messenger-Dienst ab.
Für neuere Versionen (XP und höher anscheinend):
Es ist zu beachten, dass ein mit gesendetes Nachrichtenfeld
msg.exe
nur 60 Sekunden lang gültig ist. Dies kann jedoch mit dem/time:xx
Schalter überschrieben werden.quelle
Möglicherweise wird ein kleiner Blitz angezeigt, es sind jedoch keine temporären Dateien erforderlich. Sollte bis irgendwo in der (IIRC) IE5-Ära funktionieren.
Vergessen Sie nicht, sich Ihren Klammern zu entziehen, wenn Sie Folgendes verwenden
if
:quelle
close() was unexpected at this time
.^
Escape-Zeichen in einer Fledermaus-Datei entfernenDaraufhin wird ein weiteres Eingabeaufforderungsfenster angezeigt:
quelle
start cmd /c "@echo off & mode con cols=18 lines=2 & echo My Popup Message & pause>nul"
Ändern Sie diecols=18
Anzahl der Zeichen in der Nachricht + 2. Und dielines=2
Anzahl der Zeilen beträgt + 1.cmd /k
Versuchen :
Wenn Sie command.com von Windows XP verwenden, wird ein Meldungsfeld geöffnet.
Das Öffnen eines neuen Cmd-Fensters ist nicht ganz das, wonach Sie gefragt haben. Sie können auch VBScript verwenden und dies mit Ihrer .bat-Datei verwenden. Sie würden es mit diesem Befehl aus der bat-Datei öffnen:
Dies ändert das Verzeichnis, in dem command.com nach Dateien sucht, und dann in der nächsten Zeile:
Anschließend erstellen Sie ein neues Editor- Dokument und geben es ein
Sie würden dies dann als .vbs-Datei speichern (indem Sie ".vbs" am Ende des Dateinamens einfügen) und als "Alle Dateien" im Dropdown-Feld unter dem Dateinamen speichern (damit es nicht als .txt gespeichert wird ), dann klicken Sie auf Speichern!
quelle
<script/>
Tag nicht.msg *
Sie aufgefordert, eine Nachricht gefolgt von Strg-Z einzugeben. Hier können Sie Zeilenumbrüche eingeben, die in Ihrer Nachricht angezeigt werden.Nur noch wenige Möglichkeiten.
1) Das geekeste und hackigste - es verwendet den IEXPRESS, um eine kleine Exe zu erstellen, die ein Popup mit einer einzigen Schaltfläche erstellt ( es können zwei weitere Arten von Popup-Nachrichten erstellt werden ). Funktioniert unter JEDEM Windows ab XP:
2) Verwenden
MSHTA
. Funktioniert auch auf jedem Windows-Computer ab XP und höher (obwohl das OP keine "externen" Sprachen will, wird das JavaScript hier minimiert). Sollte gespeichert werden als.bat
:oder in einer Zeile:
oder
oder
3) Hier ist parametrisierter
.bat/jscript
Hybrid (sollte gespeichert werden alsbat
). Trotz der OP-Anfrage wird wieder JavaScript verwendet, aber da es sich um eine Fledermaus handelt, kann es problemlos als Fledermausdatei aufgerufen werden. Es verwendet POPUP, das etwas mehr Kontrolle ermöglicht als das populärere MSGBOX . Es verwendet WSH, aber nicht MSHTA wie im obigen Beispiel.4) und ein
jscript.net/.bat
Hybrid (sollte gespeichert werden als.bat
). Dieses Mal verwendet.NET
und kompiliert es eine kleine.exe
Datei, die gelöscht werden könnte:5) und am Ende ein einzelner Aufruf von Powershell, der ein Popup erstellt (kann über die Befehlszeile oder über den Stapel aufgerufen werden, wenn Powershell installiert ist):
6) Und der Ansatz des Dbenham hier gesehen
7 ) Für ein System - Tray - Benachrichtigungen können Sie versuchen , diese :
quelle
Auf diese Weise erstellt Ihre Batchdatei ein VBS-Skript und zeigt ein Popup an. Nach der Ausführung löscht die Batchdatei diese Zwischendatei.
Der Vorteil der Verwendung von MSGBOX ist, dass es wirklich anpassbar ist (Titel, Symbol usw. ändern), während MSG.exe nicht so viel ist.
quelle
Hier ist eine PowerShell-Variante, bei der vor dem Erstellen des Fensters keine Baugruppen geladen werden müssen. Sie wird jedoch deutlich langsamer ausgeführt (~ + 50%) als der hier von @npocmaka veröffentlichte PowerShell MessageBox-Befehl:
Sie können den letzten Parameter von "0x0" in einen Wert unten ändern, um Symbole im Dialogfeld anzuzeigen ( weitere Informationen finden Sie unter Popup-Methode ):
0x10 Stop
0x20 Fragezeichen
0x30 Ausrufezeichen
0x40 Informationszeichen
Angepasst an den Microsoft TechNet-Artikel PowerTip: Verwenden Sie PowerShell, um das Popup-Fenster anzuzeigen .
quelle
–Sie können beliebige Zahlen von 0,1,2,3,4 anstelle von 0 (vor dem Symbol '+') schreiben. Hier ist die Bedeutung jeder Zahl:
–Sie können beliebige Zahlen von 16,32,48,64 anstelle von 16 (nach dem Symbol '+') schreiben. Hier ist die Bedeutung jeder Zahl:
quelle
Nachricht * "Geben Sie hier Ihre Nachricht ein"
funktioniert einwandfrei, speichern Sie es einfach als .bat-Datei im Editor oder stellen Sie sicher, dass das Format auf "alle Dateien" eingestellt ist.
quelle
msg %SESSIONNAME% msg
Diese Nachricht wartet ewig, bis auf OK geklickt wird (sie dauert standardmäßig nur eine Minute) und funktioniert in Windows 8.1 einwandfrei
quelle
msg * /time:0 /w <C:\Somewhere\Message.txt
Dabei befindet sich in der Datei normaler Text (der CrLfs enthält).Dazu benötigen Sie ein kleines Programm, das eine Meldungsbox anzeigt und diese aus Ihrer Batchdatei ausführt.
Sie können zwar ein Konsolenfenster öffnen, in dem eine Eingabeaufforderung angezeigt wird. Es ist jedoch nicht möglich, ein GUI-Meldungsfeld nur mit cmd.exe und Freunden abzurufen, AFAIK.
quelle
Ich verwende ein Dienstprogramm namens msgbox.exe von hier: http://www.paulsadowski.com/WSH/cmdprogs.htm
quelle
Sie können Zenity verwenden . Zenity ermöglicht die Ausführung von Dialogfeldern in Befehlszeilen- und Shell-Skripten. Weitere Informationen finden Sie auch auf Wikipedia .
Es ist plattformübergreifend: Ein Windows-Installationsprogramm für Windows finden Sie hier .
quelle
Wenn Sie der Antwort von @ Fowl folgen, können Sie sie mit einer Zeitüberschreitung verbessern, die nur 10 Sekunden lang angezeigt wird, indem Sie Folgendes verwenden:
Sehen Sie hier für weitere Details.
quelle
Sie können die DLL-Funktion von user32.dll aus aufrufen
Wenn Sie es von meinem Telefon aus eingeben, beurteilen Sie mich nicht ... sonst würde ich die zusätzlichen Flags verknüpfen.
quelle
rundll32.exe user32.dll,MessageBoxA X
eine Nachrichtenbox mit X als Titel anzeigen, wenn ich dies im Feld Ausführen mache. Egal, was ich X mache, ich kann es nicht als mehrere Parameter interpretieren lassen - alles geht in den Titel.rundll32.exe user32.dll,MessageBoxA (0, "MyTitle", "MyText", 0)
Zeigt also ein Meldungsfeld mit dem Titel "(0, "MyTitle", "MyText", 0)
Aber ich kann es überhaupt nicht zum Laufen bringen" über die Befehlszeile an - nur über das Feld "Ausführen". In der Kommandozeile macht es überhaupt nichts. Funktioniert es sicher über eine Befehlszeile oder aus einer Batchdatei oder nur über das Feld Ausführen?msg * /server:127.0.0.1 Geben Sie hier Ihre Nachricht ein
quelle
where msg
zurückC:\Windows\System32\msg.exe
. Ich denke, Sie denken annet send
Diese Anwendung kann dies tun, wenn Sie Ihre Batch-Dateien in ausführbare Dateien konvertieren (umbrechen).
Einfache Messagebox
Fehlermeldung
Abbrechen Versuchen Sie es erneut Messagebox
4) Messagebox "Nie wieder fragen"
quelle
Eine bessere Option
set my_message=Hello world
&& start cmd /c "@echo off & mode con cols=15 lines=2 & echo %my_message% & pause>nul"
Beschreibung:
lines=
Anzahl der Zeilen plus 1cols=
Anzahl der Zeichen in der Nachricht plus 3 (Minimum muss jedoch sein15
)Automatisch berechnete
cols
Version: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"
quelle
start cmd /c "@echo off & mode con cols=18 lines=2 & echo My Popup Message & pause>nul"
). Dein nicht. Es gibt die Nachricht wieder, kann jedoch die Fenstergröße nicht festlegen, dieThe screen cannot be set to the number of lines and columns specified.
zumindest in Windows 7 zurückgegeben wird.x
im aktuellen Verzeichnis oder es macht Ihnen nichts aus, sie zu verlieren.x
, schlägt Ihr Befehl nur fehl. Danke mir nicht und bitte repariere einfach deinen Code. Sie müssen nicht einmal einen Einzeiler verwenden. Und wenn Sie der Meinung sind, dass Ihr Code so gut ist, veröffentlichen Sie ihn bitte in Code Review .Hier ist mein Batch-Skript, das ich basierend auf den guten Antworten hier und in anderen Posts zusammengestellt habe
Sie können das Titel-Timeout und sogar den Ruhezustand festlegen, um es für letztere & \ n für neue Zeilen zu planen
Nennen Sie es popup.bat und legen Sie es in Ihrem Windows-Pfadordner ab, damit es global auf Ihrem PC funktioniert
Beispielsweise
popup Line 1\nLine 2
wird ein Popup-Feld mit zwei Zeilen erstellt (Typpopup /?
für die Verwendung).Hier ist der Code
quelle
Es muss NUR in einer VM eingeblendet werden. Technisch gesehen sollte es also Code geben wie:
quelle