Вы можете попробовать использовать метод Wshshell.Run, который дает вам немного контролировать процесс вы начинаете с ним. Или вы могли бы использовать метод WshShell.Exec, который даст вам контроль, чтобы прекратить его, получить ответ, передать больше параметров (кроме командной строки арг), получить статус, а другие
Чтобы использовать Run (простой метод)
Dim ProgramPath, WshShell, ProgramArgs, WaitOnReturn,intWindowStyle
Set WshShell=CreateObject ("WScript.Shell")
ProgramPath="c:\test run script.vbs"
ProgramArgs="/hello /world"
intWindowStyle=1
WaitOnReturn=True
WshShell.Run Chr (34) & ProgramPath & Chr (34) & Space (1) & ProgramArgs,intWindowStyle, WaitOnReturn
ProgramPath полный путь к вашему сценарию вы хотите запустить
ProgramArgs это аргументы, которые вы хотите передать в скрипт. (ПРИМЕЧАНИЕ: аргументы разделяются пробелом, если вы хотите использовать аргумент, содержащий пробел, тогда вам придется заключить этот аргумент в кавычки. [Безопасный способ сделать это - использовать CHR (34) Пример ProgramArgs= chr (34) & "/Hello World" & chr (34)
])
IntWindowStyle - это целое число, определяющее, как будет отображаться окно.Более подробную информацию об этом и WaitOnReturn можно найти здесь WshShell.Run Method
WaitOnReturn если true, тогда сценарий будет приостановлен до тех пор, пока команда не завершится, если false, то скрипт будет продолжен сразу после запуска команды.
ПРИМЕЧАНИЕ. Метод Run может возвращать код выхода, но вы должны установить WaitOnReturn в True и присвоить переменной WshShell.Run. (EX: ExitCode=WshShell.Run (Command,intWindowStyle,True)
)
использовать EXEC (Advanced метод)
Dim ProgramPath, WshShell, ProgramArgs, Process, ScriptEngine
Set WshShell=CreateObject ("WScript.Shell")
ProgramPath="c:\test run script.vbs"
ProgramArgs="/hello /world"
ScriptEngine="CScript.exe"
Set Process=WshShell.Exec (ScriptEngine & space (1) & Chr(34) & ProgramPath & Chr (34) & Space (1) & ProgramArgs)
Do While Process.Status=0
'Currently Waiting on the program to finish execution.
WScript.Sleep 300
Loop
ProgramPath же, как ОПИСАНИЕ Run READ протекании
ProgramArgs Дитто
ScriptEngine Двигатель вы будете использовать для выполнения скрипта. поскольку для метода exec требуется приложение win32, вам необходимо указать это. Обычно либо «WScript.exe», либо «CScript.exe»
Процесс Это объект, который ссылается на программу, сценарий начнется. Он имеет несколько членов, и они: ExitCode, ProcessID, Status, StdErr, StdIn, StdOut, Terminate.
Подробнее о членах Process Object
- ExitCode Это код выхода, который возвращается, когда процесс завершается.
- ProcessID Это идентификатор, назначенный процессу, каждый процесс имеет уникальный идентификатор processID.
- Состояние Это код, который указывает состояние процесса, при завершении процесса получает значение «-1».
- Stderr Это объект, который представляет стандартный поток ошибок
- STDIN Это объект, который представляет собой стандартный входной поток, использовать его, чтобы написать дополнительные параметры или все, что вы хотите передать в скрипт вы Бег. (
Process.StdIn.WriteLine "Hello Other Worlds"
)
- Stdout Это объект, который представляет собой стандартный поток вывода, это READONLY так что вы можете использовать
Process.StdOut.ReadLine
Если нет ничего, чтобы прочитать то сценарий будет висеть в ожидании выхода. что скрипт будет выглядеть Не отвечает
- Terminate Вызовите этот метод, чтобы принудительно завершить процесс.
Для получения дополнительной информации о WshShell.Exec перейти к Exec Method Windows Scripting Host
вы можете сделать это с помощью .bat – ukanth
Я знаю, что его можно использовать с.bat, но есть ли способ сделать это в реальном сценарии? – markdigi