Невозможно использовать круглые скобки при вызове Sub Error 800A0414 VBS
Я получаю ошибку 800A0414 в строках 7 и 12 этого скрипта:
Module Module1 Dim p Sub Main() CreateObject("Wscript.Shell").Run("program.bat", 0, True) p = Process.GetProcessesByName("program") If p.Count > 0 Then WScript.Sleep(300000) Else CreateObject("Wscript.Shell").Run("program clean up.bat", 0, True) End If End Sub Private Function WScript() As Object Throw New NotImplementedException End Function End Module
Я пытаюсь запустить пакетный скрипт, который запускает процесс, а затем ждет завершения процесса, а затем запускает другой пакетный скрипт. Я также не хочу показывать какие-либо командные поля. Если их проще, пожалуйста, дайте мне знать.
Спасибо за вашу помощь
- HTTP GET в VBS
- Поддержка VBScript в Internet Explorer 11
- Как найти окно Заголовок активного (переднего плана) windows с помощью Window Script Host
- Разрешение на копирование в VBS
- Запуск макроса Excel из внешнего Excel с помощью VBScript из командной строки
- Как вызвать файл VBScript в приложении C #?
- Рекурсивно получить доступ к файлам подпапок внутри папки
- Отсоедините командную строку объема тома usb
- Запуск командной строки молча с помощью VbScript и получение вывода?
- Как установить повторяющееся расписание для xlsm-файла с помощью планировщика задач Windows
- Планировщик задач Windows не запускает задачу в Windows 10
- Vbscript для автолога
- Отформатируйте текущую дату и время в VBScript
Когда вы вставляете список аргументов процедуры в круглые скобки, вы должны использовать ключевое слово Call
:
Call CreateObject("WScript.Shell").Run("program.bat", 0, True)
Если вы опускаете ключевое слово Call
, вы также должны отбрасывать круглые скобки:
CreateObject("WScript.Shell").Run "program.bat", 0, True
Чтобы завершить то, что было сказано ранее:
Когда ключевое слово Call используется для вызова процедуры (то есть суб или функции), аргументы должны быть заключены в круглые скобки, за исключением случаев, когда процедура не имеет аргументов, и в этом случае скобки являются необязательными. Например, все утверждения:
Call test() Call test Call test(1,2)
действительны, но не это:
Call test 1
При вызове процедуры, не использующей ключевое слово Call , скобки могут использоваться только в том случае, если в процедуре есть нуль или один аргумент, или процедура имеет возвращаемое значение (т. Е. Является функцией ), и ее значение используется в том же самом заявлении. Например, все утверждения:
test() test(1) test(1,2) a = test a = test(1,2) a = test(test(1,2),2)
являются действительными, за исключением третьего, который имеет более одного аргумента. В случае, если неясно, внутренний вызов «теста» в последнем утверждении действителен, потому что его возвращаемое значение используется в качестве аргумента для другого вызова.
Обратите внимание, что всякий раз, когда в этом тексте используются круглые скобки , он подразумевает также возможные значения, разделенные запятыми .
Кажется, это VB.NET, а не код VBScript. У вас есть функция Shell в VB.NET (и другие методы).
В любом случае, Run возвращает код ошибки, возвращаемый программой, и если вы сохраните этот результат в переменной, вы можете использовать круглые скобки в этом случае.
Dim lResult As Long lResult = CreateObject("Wscript.Shell").Run("program.bat", 0, True)
Остальное ответили @Helen.