Czy istnieje sposób na wyświetlenie okna komunikatu z pliku wsadowego (podobny do tego, jak xmessage
można go używać ze skryptów bash w systemie Linux)?
153
Czy istnieje sposób na wyświetlenie okna komunikatu z pliku wsadowego (podobny do tego, jak xmessage
można go używać ze skryptów bash w systemie Linux)?
Odpowiedzi:
Zrobiłbym bardzo prosty plik VBScript i wywołałbym go za pomocą CScript do przeanalizowania parametrów wiersza poleceń.
Coś takiego jak następujące zapisane w
MessageBox.vbs
:Które chcesz nazwać:
MsgBox
odniesienie, jeśli jesteś zainteresowany tą trasą.źródło
Po pierwsze, DOS nie ma z tym nic wspólnego, prawdopodobnie potrzebujesz rozwiązania wiersza poleceń Windows (znowu: bez DOS, czysty Windows, po prostu nie okno, ale konsola).
Możesz użyć metody VBScript dostarczonej przez boflynn lub możesz niewłaściwie użyć
net send
lubmsg
.net send
działa tylko na starszych wersjach okien:Zależy to również od działania usługi Posłaniec.
W przypadku nowszych wersji (najwyraźniej XP i nowszych):
Należy zauważyć, że wiadomość wysłana za pomocą
msg.exe
będzie trwała tylko przez 60 sekund. Można to jednak obejść za pomocą/time:xx
przełącznika.źródło
Może trochę migać, ale nie są wymagane żadne pliki tymczasowe. Powinien działać aż do miejsca w erze IE5 (IIRC).
Nie zapomnij uciec od nawiasów, jeśli używasz
if
:źródło
close() was unexpected at this time
.^
znaki ucieczki z pliku nietoperzaSpowoduje to wyświetlenie kolejnego okna wiersza polecenia:
źródło
start cmd /c "@echo off & mode con cols=18 lines=2 & echo My Popup Message & pause>nul"
zmieńcols=18
na ilość znaków w wiadomości + 2. Ilines=2
niezależnie od liczby linii wynosi + 1.cmd /k
Próbować :
Jeśli używasz command.com systemu Windows XP, spowoduje to otwarcie okna komunikatu.
Rozumiem, że otwarcie nowego okna cmd nie jest tym, o co prosiłeś. Możesz także użyć VBScript i użyć go z plikiem .bat. Otworzyłbyś go z pliku bat za pomocą tego polecenia:
To powoduje zmianę katalogu, w którym command.com wyszuka pliki, a następnie w następnym wierszu:
Następnie utwórz nowy dokument Notatnika , wpisz
Następnie zapisz to jako plik .vbs (umieszczając „.vbs” na końcu nazwy pliku), zapisz jako „Wszystkie pliki” w rozwijanym polu poniżej nazwy pliku (więc nie zostanie zapisany jako .txt ), a następnie kliknij Zapisz!
źródło
<script/>
tagu.msg *
, zostaniesz poproszony o wpisanie wiadomości, a następnie ctrl-Z. W tym miejscu możesz wprowadzić podziały wierszy, które pojawią się w wiadomości.Kilka innych sposobów.
1) Najgłupszy i najbardziej hacki - używa IEXPRESS do stworzenia małego pliku exe, który utworzy wyskakujące okienko za pomocą jednego przycisku ( może utworzyć dwa dodatkowe typy wyskakujących wiadomości ). Działa na WSZYSTKICH oknach od XP i wyższych:
2) Korzystanie
MSHTA
. Działa również na każdym komputerze z systemem Windows od XP i nowszych (pomimo tego, że OP nie chcą języków „zewnętrznych”, JavaScript jest tutaj zminimalizowany). Należy zapisać jako.bat
:lub w jednej linii:
lub
lub
3) Tutaj sparametryzowana
.bat/jscript
hybryda (należy zapisać jakobat
). Ponownie używa JavaScript pomimo żądania OP, ale ponieważ jest to nietoperz, można go bez obaw nazwać plikiem bat. Używa POPUP, który pozwala na nieco większą kontrolę niż bardziej popularny MSGBOX . Używa WSH, ale nie MSHTA, jak w powyższym przykładzie.4) i jedną
jscript.net/.bat
hybrydę (należy zapisać jako.bat
), tym razem wykorzystuje.NET
i kompiluje mały.exe
plik, który można usunąć:5), a na końcu jedno wywołanie programu PowerShell, które tworzy wyskakujące okienko (można wywołać z wiersza poleceń lub z partii, jeśli zainstalowano PowerShell):
6) I podejście dbenham widziane tutaj
7 ) W przypadku powiadomień w zasobniku systemowym możesz spróbować tego :
źródło
W ten sposób plik wsadowy utworzy skrypt VBS i wyświetli wyskakujące okienko. Po uruchomieniu plik wsadowy usunie ten plik pośredni.
Zaletą korzystania z MSGBOX jest to, że można go naprawdę dostosować (zmienić tytuł, ikonę itp.), Podczas gdy MSG.exe nie jest tak duży.
źródło
Oto wariant PowerShell, który nie wymaga ładowania zestawów przed utworzeniem okna, jednak działa zauważalnie wolniej (~ + 50%) niż polecenie PowerShell MessageBox opublikowane tutaj przez @npocmaka:
Możesz zmienić ostatni parametr z „0x0” na wartość poniżej, aby wyświetlić ikony w oknie dialogowym (więcej informacji w sekcji Metoda wyskakującego okienka ):
0x10 Stop
0x20 Znak zapytania
0x30 Wykrzyknik
0x40 Znak informacyjny
Na podstawie artykułu Microsoft TechNet PowerTip: Użyj programu PowerShell, aby wyświetlić wyskakujące okienko .
źródło
- możesz wpisać dowolne liczby od 0,1,2,3,4 zamiast 0 (przed symbolem „+”) i tutaj jest znaczenie każdej liczby:
- możesz wpisać dowolne liczby od 16,32,48,64 zamiast 16 (po symbolu „+”) i tutaj jest znaczenie każdej liczby:
źródło
Msg * "tu wstaw swoją wiadomość"
działa dobrze, po prostu zapisz jako plik .bat w notatniku lub upewnij się, że format jest ustawiony na „wszystkie pliki”
źródło
msg %SESSIONNAME% msg
Ta wiadomość czeka wiecznie, aż klikniesz OK (domyślnie trwa tylko minutę) i działa dobrze w Windows 8.1
źródło
msg * /time:0 /w <C:\Somewhere\Message.txt
gdzie w pliku jest zwykły tekst (zawierający CrLf).Aby to zrobić, musisz mieć mały program, który wyświetla skrzynkę komunikatów i uruchamia go z pliku wsadowego.
Możesz otworzyć okno konsoli, które wyświetla monit, ale wyświetlenie okna komunikatu GUI za pomocą cmd.exe i tylko znajomych nie jest możliwe, AFAIK.
źródło
Używam narzędzia o nazwie msgbox.exe stąd: http://www.paulsadowski.com/WSH/cmdprogs.htm
źródło
Możesz użyć Zenity . Zenity pozwala na wykonywanie okien dialogowych w wierszach poleceń i skryptach powłoki. Więcej informacji można znaleźć również w Wikipedii .
Jest wieloplatformowy: instalator systemu Windows dla systemu Windows można znaleźć tutaj .
źródło
Podążając za odpowiedzią @ Fowl, możesz ją poprawić, ustawiając limit czasu, aby pojawiał się tylko przez 10 sekund, używając:
Więcej informacji znajdziesz tutaj .
źródło
Możesz wywołać funkcję dll z user32.dll Myślę, że coś takiego
Pisząc to z mojego telefonu, nie oceniaj mnie ... w przeciwnym razie połączyłbym dodatkowe flagi.
źródło
rundll32.exe user32.dll,MessageBoxA X
wyświetlić skrzynkę wiadomości z X jako tytułem, gdy robię to w polu Uruchom. Bez względu na to, jakim X jest, nie mogę go interpretować jako wielu parametrów - wszystko trafia do tytułu. Więcrundll32.exe user32.dll,MessageBoxA (0, "MyTitle", "MyText", 0)
wyświetla okno wiadomości z tytułem(0, "MyTitle", "MyText", 0)
Ale nie mogę zmusić go do działania W CAŁOŚCI z wiersza poleceń - tylko z pola Uruchom. W linii poleceń w ogóle nic nie robi. Czy na pewno działa z wiersza poleceń lub z pliku wsadowego, czy tylko z pola Uruchom?msg * /server:127.0.0.1 Wpisz tutaj swoją wiadomość
źródło
where msg
zwracaC:\Windows\System32\msg.exe
. Myślę, że myślisz onet send
Ta aplikacja może to zrobić, jeśli konwertujesz (zawijasz) pliki wsadowe do plików wykonywalnych.
Prosta skrzynka wiadomości
Komunikat o błędzie
Anuluj pole wiadomości Spróbuj ponownie
4) Skrzynka wiadomości „Nigdy więcej nie pytaj”
źródło
Lepsza opcja
set my_message=Hello world
&& start cmd /c "@echo off & mode con cols=15 lines=2 & echo %my_message% & pause>nul"
Opis:
lines=
liczba wierszy plus 1cols=
liczba znaków w wiadomości plus 3 (przy czym minimum musi wynosić15
)cols
Wersja obliczana automatycznie :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"
źródło
start cmd /c "@echo off & mode con cols=18 lines=2 & echo My Popup Message & pause>nul"
). Twój nie. Powtarza komunikat, ale nie ustawia rozmiaru okna, zwracającThe screen cannot be set to the number of lines and columns specified.
przynajmniej w moim systemie Windows 7.x
w bieżącym katalogu nie ma pliku o nazwie lub nie masz nic przeciwko jego utracie.x
, polecenie po prostu się nie powiedzie. Nie dziękuj mi i popraw kod. Nie musisz nawet używać jednej linijki. A jeśli uważasz, że Twój kod jest tak dobry, opublikuj go w Przeglądzie kodu .Oto mój skrypt wsadowy, który stworzyłem na podstawie dobrych odpowiedzi tutaj i innych postów
Możesz ustawić limit czasu tytułu, a nawet uśpić, aby zaplanować go na później & \ n dla nowej linii
Nazwij go popup.bat i umieść w folderze ścieżki systemu Windows, aby działał globalnie na twoim komputerze
Na przykład
popup Line 1\nLine 2
wyświetli 2-wierszowe okienko wyskakujące (typpopup /?
do użycia)Oto kod
źródło
musi wyświetlać wyskakujące okienko TYLKO wewnątrz maszyny wirtualnej, więc technicznie rzecz biorąc, powinien być kod taki jak:
źródło