Wscript.Shell Run не работает последовательно - PullRequest
0 голосов
/ 24 августа 2010

Я пытаюсь запустить следующий бит кода в DLL vb6:

Dim objWSShell As Object
Set objWSShell = CreateObject("Wscript.Shell")
objWSShell.Run strPath & "test.bat", 0, True

Процесс dll зависает. Пакетный файл не будет запущен, независимо от его содержимого. Я даже попробовал пустой пакетный файл, и он все еще зависал. Однако, если я попробую этот же кусок кода, с этим изменением:

Dim objWSShell As Object
Set objWSShell = CreateObject("Wscript.Shell")
objWSShell.Run "calc", 0, True

Работает нормально. Я не могу понять, почему exe-файлы работают, а bat-файлы - нет. Есть идеи?

Ответы [ 3 ]

3 голосов
/ 25 августа 2010

Вам не нужно использовать сценарии оболочки, вы можете упростить вещи и использовать встроенную функцию Shell():

shell environ$("COMSPEC") & " /C c:\xxx\yyy.bat", vbNormalFocus 

То же самое для:

shell "calc", vbNormalFocus 
2 голосов
/ 25 августа 2010

Вам нужно запустить cmd.exe и передать в него свой BAT-файл.

objWSShell.Run "%COMSPEC% /c " & strPath & "test.bat", 0, True
1 голос
/ 28 января 2012

У меня была похожая проблема , где нельзя было запускать командные файлы напрямую из WScript.Shell, но у меня не было доступа для изменения VBScript.Оказывается, в расширении .bat было переопределение реестра.

Хотя использование COMSPEC для меня работало, удаление раздела реестра на самом деле решило больше, чем просто проблема WScript.

...