cmd中Run命令和命令的区别是什么?

时间:2015-12-03 01:46:49

标签: autohotkey

我有以下脚本:

^!c::
Run stop
Return

Stop配置为通过环境变量运行程序。

因此,如果我打开cmd并键入“stop”并按Enter键,程序将按预期打开,即使我按 winkey + R 也会执行相同的操作。但是,如果我使用 ctrl + alt + c 的脚本。我没有得到相同的结果。

为什么脚本会做出不同的事情?

如何更改我的脚本的行为方式与输入cmd或 winkey + R 的方式相同?

1 个答案:

答案 0 :(得分:2)

<强>简单

run, %comspec% /c stop

或者,如果这不起作用,您只需启动cmd窗口并直接发送

run, %comspec% /k
WinWait, %comspec%
WinActivate
Send stop{Enter}

/c告诉控制台窗口在执行后关闭,/k让它保持打开状态

或者您可以使用 COM对象,甚至可以获得输出。

objShell := ComObjCreate("WScript.Shell")
objExec := objShell.Exec(ComSpec " /c stop")

strStdOut := ""
while, !objExec.StdOut.AtEndOfStream
{
    strStdOut := objExec.StdOut.ReadAll()
}

更新: 根本没有运行命令:

SetTitleMatchMode, 2

send #r

WinWait, TITLE_OF_THE_RUN_WINDOW
WinActivate

send cmd{Enter}

WinWait, cmd.exe
WinActivate

WinGetTitle, title
Send stop{Enter}

WinWait, %title%,,, stop
WinClose,

TITLE_OF_THE_RUN_WINDOW将此替换为窗口标题,该窗口在Win + r上打开。 Windows cmd窗口在执行时在其标题中包含命令。所以我们保存命令窗口的标题,然后等待它删除命令(&#34;停止&#34;)然后关闭它。

更新:Cmd窗口关闭添加到解决方案4