【问题标题】:CMD opens instead of VBSCMD 打开而不是 VBS
【发布时间】:2013-10-19 21:29:45
【问题描述】:

我做了一个批处理文件:

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。请自行尝试。

【问题讨论】:

    标签: windows shell batch-file vbscript cmd


    【解决方案1】:

    这在没有开始的情况下有效... ; )
    如果你只需要运行vbs,那么只需使用"c:\folder\blabla.vbs"而不是start,或者如果你需要使用start,则使用start "" "c:\folder\blabla.vbs"

    【讨论】:

    • nephi12 什么意思?它没有开始就可以工作吗?你能告诉我更多吗?
    • 我说过!...如果您只需要运行 vbs,那么只需使用“c:\folder\blabla.vbs”,但如果他想在某个时候重新获得控制权,开始是一个明智的选择。
    【解决方案2】:

    如果您真的需要 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 交互仍有待观察。

    【讨论】:

    • 好的,那么启动 vbs 的命令是什么?如果我问明显的东西,我很抱歉,但我对此很陌生。谢谢你的回答
    【解决方案3】:

    当使用 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
    

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

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2013-03-25
        • 2017-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-09-25
        • 2018-10-29
        • 1970-01-01
        • 2012-08-18
        相关资源
        最近更新 更多