我遇到了使用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代码时,它什么都不做。批处理文件中的命令是直接的,包括可执行文件的路径,然后是可执行文件的文件路径。按如下所示更改上面的Run命令会导致与尝试调用批处理文件相同的事情 - 完全没有。
objShell.Run "C:\Path\to\my\executable.exe C:\Path\to\my\file.extension"
我的最终目标是在脚本中构建文件字符串的路径,但即使硬编码失败也无关紧要。任何帮助将不胜感激。
答案 0 :(得分:2)
我能够通过两次更改来解决这个问题。首先,我在命令的前面添加了“cmd / c”。
这导致得到一个不同的错误(找不到文件),它实际上是由我试图执行的程序的计时问题引起的。在Run命令之后添加1秒的延迟(在处理objSehll对象之前)解决了这个问题。
感谢所有回复的人。
答案 1 :(得分:1)
尝试
objShell.Exec "C:\Path\to\my\batch.bat"
或
objShell.Run "%comspec% /K C:\Path\to\my\batch.bat"