1

我在让 Run(或 Exec)方法与 VBS 一起工作时遇到问题。我在运行任意命令时遇到了很多困难,我不得不将我的命令放在一个批处理文件中并尝试使用 Run 来调用 .bat 文件。即使这种方法也行不通。代码如下:

Dim objShell
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "C:\Path\to\my\batch.bat"
Set objShell = Nothing

打开命令提示符并简单地输入 'C:\Path\to\my\batch.bat' 运行完全符合我的预期。但是,当使用上面的 VBS 代码时,它什么也不做。批处理文件中的命令很简单,包括可执行文件的路径,然后是可执行文件要执行的文件的路径。如下更改上面的运行命令会导致与尝试调用批处理文件相同的结果 - 根本没有。

objShell.Run "C:\Path\to\my\executable.exe C:\Path\to\my\file.extension"

我的最终目标是在脚本中构建文件字符串的路径,但即使硬编码失败,这似乎也无关紧要。任何帮助将非常感激。

4

2 回答 2

2

我能够通过两个更改来解决这个问题。首先,我在命令的前面添加了“cmd /c”。

这导致出现不同的错误(找不到文件),它实际上是由我尝试执行的程序的计时问题引起的。在 Run 命令之后(在处理 objSehll 对象之前)添加 1 秒延迟解决了这个问题。

感谢大家的回应。

于 2013-08-28T15:59:41.980 回答
1

尝试

objShell.Exec "C:\Path\to\my\batch.bat"

或者

objShell.Run "%comspec% /K C:\Path\to\my\batch.bat"
于 2013-08-27T15:18:27.757 回答