Захватить код возврата Консольного приложения в VBscript? - PullRequest
2 голосов
/ 01 августа 2011

Я пытаюсь вернуть код успеха / ошибки, используя функцию Environment.Exit в консольном приложении. (0 для успеха, 1 для ошибки). Теперь я хочу записать этот код возврата в vbscript и отобразить код возврата (например, WScript.Echo (returnCode)).

Кто-нибудь знает, можно ли это сделать?

Спасибо

Ответы [ 3 ]

4 голосов
/ 01 августа 2011

Запуск других программ из скрипта .

exitcode = WshShell.Run(strCommand, , true])

Если bWaitOnReturn установлен в True, метод Run создает новый процесс, выполняет команду и ждет, пока процесс не прекратится. В этом В этом случае метод Run возвращает код ошибки, полученный из завершенный процесс. Если bWaitOnReturn отсутствует или имеет значение False, Run возвращает код ошибки 0.

2 голосов
/ 01 августа 2011
Set WshShell = WScript.CreateObject("WScript.Shell")
errcode =  WshShell.Run("your program.exe",,true)
1 голос
/ 05 июня 2016

Допустим, ваш сценарий, который вы запускаете, называется " Канада .vbs", и, скажем, сценарий, который вернет код " Mexico .vbs".

Код CANADA.VBS (это то, что вы будете запускать.):

Dim ExitCode
Dim Return
Dim WshShell
Set WshShell=CreateObject ("WScript.Shell")

Dim Command
Command="Mexico.vbs"
Command=Chr(34) & Command & Chr (34)
ExitCode=WshShell.Run (Command, 1, True)

If ExitCode="1" Then
Return="Success"
ElseIf ExitCode="2" Then
Return="Failure"
Else
Return="Unknown"
End If

MsgBox Return

MEXICO.VBS Code (это то, что будет работать Канада.):

Dim Success

Success=MsgBox ("Do you want to Succeed?",vbQuestion + vbYesNo,"Your Goals are good?")

success=success-7        'Vbyes=6 vbno=7. True=-1 False=0.

'The Above Code is only for demonstration purposes. You may set success in your own statement

If Success Then          'Successful
Success=1
ElseIf not Success Then  'Failure
Success=2
Else                     'Unknown
Success=0
End If

WScript.Quit (Success)

Хорошо, теперь в Канаде вам нужно будет объявить переменную, которая будет содержать код выхода из Мексики. Давайте назовем это
Dim ExitCode
Нам также понадобится строковая переменная (хотя вы можете удвоить переменную ExitCode, как это, но это может затруднить отладку больших файлов. Поэтому давайте держим их отдельно.)

Dim Return

и нам понадобится объект, который будет запускать Mexico.vbs. нам нужен объект Wscript Shell

Dim WshShell
Set Wshshell=CreateObject ("WScript.Shell")

Теперь нам нужно указать скрипт для запуска. путь к сценарию "Mexico.vbs"

Dim Command
Command="Mexico.vbs"

Теперь просто в случае, если в пути к файлу есть пробелы (нет, но давайте будем в безопасности), нам нужно заключить путь в кавычки. (Код символа: 34)

Command=Chr(34) & Command & Chr (34)

Теперь нам нужно запустить Mexico.vbs из Canada.vbs и сохранить возврат в переменную

ExitCode=WshShell.Run (Command, 1, True) 'command is path, 1 is window state, true is wait for return.

Теперь мы форматируем ExitCode в строку UserFriendly.

If ExitCode="1" Then
Return="Success"
ElseIf ExitCode="2" Then
Return="Failure"
Else
Return="Unknown"
End If

Теперь мы отобразим результат в виде сообщения.

MsgBox Return

В Mexico.vbs вы будете отправлять данные об успехе или неудаче через код выхода. Мы назовем переменную кода выхода Success

Dim Success

ЭТА ЧАСТЬ ДЛЯ ЦЕЛЕЙ ДЕМОНСТРАЦИИ. Вы можете исключить эту часть и заменить ее своими аудиторскими заключениями. Просто установите для параметра «Успех» значение «истина» в случае успеха или значение «Ложь» в случае неудачи.

Success=MsgBox ("Do you want to Succeed?",vbQuestion + vbYesNo,"Your Goals are good?")

success=success-7        'Vbyes=6 vbno=7. True=-1 False=0.

'The Above Code is only for demonstration purposes. You may set success in your own statement

Теперь мы преобразуем bool Success в целое число, 1 = успех, 2 = сбой, 0 = неизвестно

If Success Then          'Successful
Success=1
ElseIf not Success Then  'Failure
Success=2
Else                     'Unknown
Success=0
End If

А теперь мы завершим скрипт Mexico.vbs с кодом выхода, установленным в Success.

WScript.Quit (Success)
...