CMD打开,而不是VBS

问题描述:

我做了一个批处理文件:CMD打开,而不是VBS

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

这个工作没有开始...; )
如果您只需要运行vbs,那么只需使用"c:\folder\blabla.vbs"而不是开始,如果需要使用start,则使用start "" "c:\folder\blabla.vbs"

+0

nephi12你是什么意思?它的工作没有开始?你能告诉我更多吗? –

+1

我说过了......如果你需要的只是运行vbs,那么只需使用“c:\ folder \ blabla.vbs”,但是如果他想在某个时候恢复控制,启动是明智的选择。 – nephi12

如果你真的需要启动,看它的文档:

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交互还有待观察。

+0

好的,那么启动vbs的命令是什么?如果我提出明显的问题,我很抱歉,但我对此很新。谢谢你的回答 –

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

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

作为最后一个命令睡一秒钟的意义是什么?

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

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

对于大多数应用程序(网页除外),不需要执行多个sendkeys。

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

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

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