Chciałbym wyświetlić wiadomość dla użytkownika za pomocą CMD. Wiem, że to robię, tworząc plik .vbs (VBScript) i uruchamiając go z CMD w następujący sposób:
(echo MsgBox "Line 1" ^& vbCrLf ^& "Line 2",262192, "Title")> File.vbs
start File.vbs
Ale chcę wyświetlić wiadomość bez tworzenia żadnego pliku, bezpośrednio z CMD. Może za pomocą polecenia do uruchamiania skryptów VBScript bezpośrednio z CMD.
msg
polecenie. Możesz go nie mieć, jeśli używasz domowej wersji systemu Windows, ale możesz go dodać, po prostu kopiując i wklejając msg.exe z instalacji Pro.Odpowiedzi:
Jak powiedzieli inni, nie da się tego zrobić wyłącznie za pomocą cmd, ale chociaż taki jest tytuł pytania, wydaje mi się, że część bez pliku jest dla ciebie ważniejsza i w pewnych okolicznościach może to być możliwe.
W PowerShell powinno być możliwe uruchamianie kodu bez pliku takiego jak ten:
VBS nie pozwala na bezpośrednie wykonanie kodu przez cscript lub wscript, ale mshta tak. Możesz użyć tego w ten sposób (jeśli potrzebujesz wielu linii, użyj „:” jako separatora):
Ponieważ jest to oparte, może podlegać pewnym ograniczeniom GPO, więc jeśli masz wybór, PowerShell jest prawdopodobnie bezpieczniejszym zakładem
źródło
mshta
, niektóre oprogramowanie antywirusowe uważa, że jest to potencjalnie niepożądany proces. W pracy moja próba uruchomienia spowodowała nadgorliwy produkt dla przedsiębiorstw (SentinelOne), który poddał moją maszynę kwarantannie i usunął ją z sieci.Jak sugeruje @wysiwyg, w wersjach Pro / Business * systemu Windows szukasz
Msg
polecenia. Jest dostępny we wszystkich nowoczesnych wersjach systemu Windows (przynajmniej w wersji XP). Aby wyświetlić komunikat do aktualnie zalogowanego użytkownika, uruchom następujące polecenie:Wynik wygląda następująco:
Jedną z kwestii tego polecenia jest to, że nie można dostosować tekstu paska tytułu.
Możesz dowiedzieć się więcej o Msg w TechNet .
* Jeśli potrzebujesz rozwiązania, które działa we wszystkich wersjach systemu Windows, w tym Home , moim zdaniem metoda VBScript, o której już wiesz, jest najprostszym rozwiązaniem tego problemu. Działa na wszystkich nowoczesnych wersjach i edycjach systemu Windows w ich domyślnej konfiguracji i jest łatwy w użyciu.
źródło
Potrzebowałem dziś czegoś podobnego do tego. Ponieważ nie mogłem znaleźć zewnętrznego rozwiązania zależności, które mi się podobało, ponieważ tak naprawdę nie jestem fanem VBScript / Powershell, napisałem jedno:
https://github.com/cubiclesoft/messagebox-windows
Wyświetlane przez nią okna komunikatów są modalne do bieżącego okna konsoli. Oznacza to, że użytkownik nie może nic zrobić, dopóki nie zamknie okna dialogowego. Ponadto kod powrotu z
MessageBox()
połączenia jest zwracany do osoby dzwoniącej, aby skrypt mógł zareagować na naciśnięcie dowolnego przycisku. I, oczywiście, obsługuje pełny zakres opcji dlaMessageBox()
API Win32.Dodanie pliku wykonywalnego o rozmiarze 80 KB może nie być filiżanką herbaty dla wszystkich. Jest jednak statycznie powiązany z środowiskiem wykonawczym VC ++ i obsługuje Unicode, co wyjaśnia, dlaczego plik jest tak duży, biorąc pod uwagę minimalistyczny charakter tego, co robi. Jest też drobny problem polegający na tym, że nie można łatwo przekazać nowych wierszy z wiersza polecenia, aby wyświetlić wiadomości wielowierszowe. Niewielką zaletą jest to, że wyświetla okno dialogowe w krótszym czasie na zegarze ściennym niż w przypadku innych prezentowanych dotychczas rozwiązań.
Oczywiście, jeśli rozmiar pliku nie ma znaczenia, a okna dialogowe tworzą zbyt proste wrażenia użytkownika i / lub nie wymagają interakcji użytkownika, wpadłem również na ten fajny projekt:
https://www.paralint.com/projects/notifu/
Który wyświetla dymek podręczny w obszarze powiadomień o stanie na ekranie przy użyciu IUserNotification . Minusem jest to, że plik wykonywalny Notifu działa po prostu o wartości 240 KB. Kolejny niefortunny przykład, że COM powoduje niepotrzebne wzdęcia i sprawia, że życzę sobie, aby dla tej funkcji istniał prosty, lekki interfejs API.
Dla czegoś wieloplatformowego jest zenity. Dotyczy to głównie Linuksa, ale są też porty Mac i Windows. Port zenity systemu Windows ma rozmiar ponad 1 MB, ponieważ cóż, GTK jest dość rozdęty.
źródło
Mam sposób to zrobić za pomocą cmd, ale zasadniczo zawiera on plik, ale plik jest usuwany natychmiast po wykonaniu vbs. Więc to nie jest tak naprawdę. Możesz to zrobić :
Type + Icon + Action to tylko podstawowe vbs, w celach informacyjnych, tutaj. https://therevisionist.org/wp-content/uploads/2016/03/vbscript_msgbox_chart-e1458059002411.jpg?x47750 Kod, który pokazałem, tworzy plik zawierający kod VBS, następnie wykonuje go za pomocą cscript, a następnie usuwa plik po uruchomieniu, dzięki czemu wygląda na przywołany przez wiersz polecenia cmd. Aby wyglądało to bardziej tak, po prostu wyłącz @echo. Mam nadzieję, że to pomogło!
źródło
Dodatkowo, ze na zewnętrzny (nienatywnym Windows) wykonywalny , tam
Jeśli masz dostęp do kompilatora VB6, to ten linijka tworzy plik wykonywalny 5,5k:
źródło