Jakie jest polecenie lub najszybszy sposób wyprowadzenia wyników do konsoli przy użyciu vbscript?
165
Masz na myśli:
Wscript.Echo "Like this?"
Jeśli uruchomisz to w ramach wscript.exe
(domyślny program obsługi rozszerzenia .vbs, więc co uzyskasz, jeśli dwukrotnie klikniesz skrypt), pojawi się okno dialogowe „MessageBox” z Twoim tekstem. Jeśli uruchomisz to poniżej cscript.exe
, otrzymasz dane wyjściowe w oknie konsoli.
MsgBox("text")
lub,MsgBox(object.property)
aleWscript.Echo
jest ona łatwiejsza do napisania. Dzięki.WScript.Echo
musi być używany niezależnie od tego, czy biegasz przez,WScript
czyCScript
. Oznacza to, że nie jestCScript.Echo
, w przypadku przyszłych Googlersi dziwnego. ( Bardzo się cieszę, że msgboxy zniknęły [po uruchomieniucscript
], ale; dzięki.)WScript.Echo
. Przypuszczam, że gdybyś chciał pozostać całkowicie w WScript, mógłbyś zrobić coś przerażająco podejrzanego, jak wykonanie innego procesu, aby wykonać „SendKeys” do procesu nadrzędnego, aby zamknąć MessageBox.popup
metodę. Bardzo podobny do,echo
ale umożliwia określenie limitu czasu, po którym automatycznie zamknie wyskakujące okienko. Bardzo wygodny i łatwy w użyciu: technet.microsoft.com/en-us/library/ee156593.aspxZostało to znalezione w skryptach Dragon-IT i repozytorium kodu .
Możesz to zrobić w następujący sposób i trzymać się z dala od różnic między cscript / wscript, a także uzyskać takie same dane wyjściowe konsoli, jakie miałby plik wsadowy. Może to pomóc, jeśli dzwonisz do VBS z pliku wsadowego i chcesz, aby wyglądało bezproblemowo.
źródło
WScript.Echo
. W rzeczywistości różnica jest większa, ponieważ skrypt w ogóle nie będzie działał pod WScript. Jest to ważna technika, która ma swoje zastosowania, na przykład jeśli trzeba pisać do StdErr, ale w kontekście tej odpowiedzi jest myląca.WScript.Echo
:cscript //b foobar.vbs
działafoobar.vbs
bez żadnego wyjścia konsoli, ale metodą Roba można uzyskać dane wyjściowe nawet po przejściu\\b
docscript.exe
Musisz tylko wymusić cscript zamiast wscript. Zawsze używam tego szablonu. Funkcja ForceConsole () wykona twoje vbs do cscript, masz również ładny alias do drukowania i skanowania tekstu.
źródło
Natknąłem się na ten post i wróciłem do podejścia, które stosowałem jakiś czas temu, które jest podobne do @ MadAntrax.
Główną różnicą jest to, że używa on zdefiniowanej przez użytkownika klasy VBScript do zawijania całej logiki przełączania na CScript i wysyłania tekstu do konsoli, dzięki czemu główny skrypt jest nieco czystszy.
Zakłada się, że Twoim celem jest strumieniowe przesyłanie danych wyjściowych do konsoli, zamiast kierowania danych wyjściowych do okien komunikatów.
Klasa cCONSOLE znajduje się poniżej. Aby z niej skorzystać, dołącz całą klasę na końcu skryptu, a następnie utwórz jej instancję bezpośrednio na początku skryptu. Oto przykład:
Oto kod klasy cCONSOLE
źródło
Istnieje pięć sposobów wyświetlania tekstu na konsolę:
WScript.Echo wyświetli dane wyjściowe do konsoli, ale tylko wtedy, gdy skrypt zostanie uruchomiony przy użyciu cscript.exe. Wyświetli się w oknach komunikatów, jeśli zostanie uruchomiony przy użyciu wscript.exe.
WScript.StdOut.Write i WScript.StdOut.WriteLine zawsze będą wyświetlane na konsoli.
StdOut.Write i StdOut.WriteLine będą również zawsze wyświetlane na konsoli. Wymaga tworzenia dodatkowych obiektów, ale jest około 10% szybsze niż WScript.Echo.
źródło