контроль не возвращается в исходный файл VBS после команды запуска - PullRequest
0 голосов
/ 12 мая 2019

Я пытаюсь вызвать файл VBS из другого.Вызываемый файл выполняется.Однако элемент управления не возвращается к исходному файлу VBS.Этот файл работает, как я вижу процесс wscript в диспетчере задач.Но я не вижу вывод - шаг после команды запуска.Буду признателен за любую помощь / предложение.

1.) VBS файл 1 (оригинальный файл VBS test3.vbs)

Set objShell = WScript.CreateObject ("WScript.shell")
strErrorCode  = objShell.run("cmd /K C:\temp\a\test2.vbs", 0, True)
msgbox "complete test3"
Set objShell = Nothing

2.) VBS файл 2 (который называется файл VBS - test2.VBS)

msgbox "in test2"
WScript.Sleep 10000
msgbox "complete - test2"

3.) Ожидаемый результат:

in test2
complete - test2
complete test3

4.) Фактический:

in test2
complete - test2

1 Ответ

1 голос
/ 12 мая 2019

objShell.run("cmd /K C:\temp\a\test2.vbs", 0, True) никогда не заканчивается из-за переключателя /K:

cmd /?
Starts a new instance of the Windows command interpreter

CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
    [[/S] [/C | /K] string]

/C      Carries out the command specified by string and then terminates
/K      Carries out the command specified by string but remains

Так что cmd окно остается открытым, но оно скрыто из-за intWindowStyle параметр: 0 = Скрывает окно и активирует другое окно , предполагая, что шаблон синтаксиса метода Run имеет вид .Run(strCommand, [intWindowStyle], [bWaitOnReturn])

Используйте либо

strErrorCode  = objShell.run("cmd /C C:\temp\a\test2.vbs", 0, True)

или

strErrorCode  = objShell.run("wscript.exe C:\temp\a\test2.vbs", 0, True)

или даже

 strErrorCode  = objShell.run("C:\temp\a\test2.vbs", 0, True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...