2

我做了一个批处理文件:

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

4 回答 4

2

这没有开始就可以工作......; )
如果您只需要运行 vbs,则只需使用"c:\folder\blabla.vbs"而不是 start,或者start "" "c:\folder\blabla.vbs"如果您需要使用 start,请使用。

于 2013-10-19T21:42:30.263 回答
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

...

整个 rigmarole 如何与 Sendkeys 交互仍有待观察。

于 2013-10-19T21:39:23.590 回答
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

大多数应用程序(网页除外)无需执行多个发送键。

于 2013-10-19T22:08:33.293 回答
0

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

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

Start人们有一个坏习惯,即在真正不需要时尝试使用命令来运行所有东西,当使用它运行文件时,start它只是使用 WindowsShellExecute逻辑来搜索默认关联程序......两者都可以,但你最好尝试运行正确的像我说的那样的应用程序而不是start命令。

于 2013-10-20T09:34:30.043 回答