To jest przykład kodu VBScript, który pokazuje, jak wychwycić cokolwiek program wiersza poleceń wysyła na standardowe wyjście. Wykonuje polecenie xcopy /?
i wyświetla dane wyjściowe w oknie komunikatu. Zanim pojawi się okno komunikatu, przez ułamek sekundy pojawi się okno konsoli.Kod VBscript do przechwytywania stdout, bez wyświetlania okna konsoli
Set objShell = WScript.CreateObject("WScript.Shell")
Set objExec = objShell.Exec("xcopy /?")
Do
line = objExec.StdOut.ReadLine()
s = s & line & vbcrlf
Loop While Not objExec.Stdout.atEndOfStream
WScript.Echo s
Oto inny przykład kodu VBScript, który pokazuje, jak wykonać skrypt bez wyświetlania okna konsoli.
objShell.Run "c:\temp\mybatch.bat C:\WINDOWS\system32\cmd.exe", 0
lub
objShell.Run "c:\temp\myscript.vbs C:\WINDOWS\system32\cscript.exe", 0
Jak widać ma ona formę <script><space><executor>
. Ostatni przykład używa objShell.Run
zamiast objShell.Exec
Co nie wiem, jest to, jak wykonać program wiersza poleceń (jeśli to konieczne z pliku wsadowego), złapać standardowe wyjście, bez pokazywania okna konsoli. Jakieś pomysły?
Genialne rozwiązanie. Szkoda na temat plików tymczasowych. Ale spełnia wymagania, więc punkty są twoje. Dzięki, Marcel. – mgr326639