Тема: VBScript: запуск консольного приложения с чтением его вывода
В примере запускается командный интерпретатор, затем по очереди выполняется несколько команд, затем считывается весь вывод этих команд.
Set WshShell = CreateObject("WScript.Shell")
Set WshExec = WshShell.Exec("cmd.exe /q /k echo off")
WshExec.StdIn.WriteLine "chcp 1251>nul"
WshExec.StdIn.WriteLine "cd /d ""%ProgramFiles%"" && dir"
WshExec.StdIn.WriteLine "exit"
Set TextStream = WshExec.StdOut
Str = TextStream.ReadAll
WScript.Echo Str
Метод ReadAll при этом ожидает появления всех данных в потоке вывода.
Автор примера - wisgest.
Любопытно, что следующие команды могут привести к различным результатам:
chcp 1251>nul
cd /d "%ProgramFiles%" && dir
chcp 1251>nul && cd /d "%ProgramFiles%" && dir
В первом случае вывод может оказаться в кодировке Windows-1251, а во втором - в cp866.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.