Wscript.Shell Run无法持续工作

问题描述 投票:0回答:3

我正在尝试在vb6 dll中运行以下代码:

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文件不能工作。有什么想法吗?

vb6 wsh
3个回答
2
投票

您需要运行cmd.exe并将BAT文件传递给它。

objWSShell.Run "%COMSPEC% /c " & strPath & "test.bat", 0, True

3
投票

您不需要使用shell脚本编写的东西,可以使事情变得更简单并使用内置的Shell()函数:

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

Ditto用于:

shell "calc", vbNormalFocus 

1
投票

我有一个similar issue,无法直接从WScript.Shell运行批处理文件,但是我无权修改VBScript。原来,.bat扩展名上存在注册表覆盖。

尽管使用COMSPEC对我有用,但是删除注册表项实际上不仅解决了WScript问题,还解决了更多问题。

© www.soinside.com 2019 - 2024. All rights reserved.