CMD打开而不是VBS

时间:2013-10-19 21:29:45

标签: windows shell batch-file vbscript cmd

我制作了批处理文件:

echo set shell = createobject^("wscript.shell"^) : wscript.sleep^(1000^) : shell.sendkeys^("blablabla"^) : Shell.SendKeys "{Enter}" : wscript.sleep^(1000^) >"c:\folder\blabla.vbs"
start "c:\folder\blabla.vbs"

但是当我打开批处理文件时,似乎CMD启动了,但VBS文件却没有。但是当我手动打开VBS文件时,它可以工作。那么问题出在哪里。 VBS手动工作,但批处理命令不启动VBS。请自行尝试。

4 个答案:

答案 0 :(得分:2)

这没有开始...... )
如果您只需要运行vbs,那么只需使用"c:\folder\blabla.vbs"而不是开头,或者如果您需要使用开头,请使用start "" "c:\folder\blabla.vbs"

答案 1 :(得分:1)

如果您确实需要START,请查看其文档:

start /?
Starts a separate window to run a specified program or command.
         ===============

START ["title"] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
      [/WAIT] [/B] [command/program]
      [parameters]

    "title"     Title to display in  window title bar.
    path        Starting directory
    B           Start application without creating a new window. The
   ===                            =============================
                application has ^C handling ignored. Unless the application
                enables ^C processing, ^Break is the only way to interrupt
                the application

...

整个钻井平台如何与Sendkeys交互还有待观察。

答案 2 :(得分:0)

当使用start命令并且命令行上有引号时,第一组引号是窗口标题。

start "" "c:\folder\blabla.vbs"

作为最后一个命令,一秒睡眠的重点是什么?

您的脚本不健壮。在sendkeys之前使用AppActivate是个好主意,以确保它进入正确的窗口。使用AppActivate将允许您摆脱第一个sleep命令。

If WSHShell.AppActivate("Calculator")=False then 
    WshShell.Run "C:\windows\System32\calc.exe", 1, false 
End If

大多数应用程序都不需要执行多个sendkeys(除了网页)。

答案 3 :(得分:0)

使用start运行vbs文件与运行此文件相同:

Wscript.exe "c:\folder\blabla.vbs"

人们养成了使用Start命令在不需要时运行所有内容的坏习惯,当使用start运行文件时,它只使用Windows ShellExecute逻辑进行搜索默认的关联程序...两者都可以工作,但你最好尝试运行正确的应用程序,就像我说的那样,而不是start命令。