运行命令和cmd命令有什么区别?

问题描述:

我有以下脚本:运行命令和cmd命令有什么区别?

^!c:: 
Run stop 
Return 

停止配置为通过环境变量来运行程序。

所以,如果我打开CMD,输入“停止”并回车打开程序的意图,即使我把WINKEY + [R它做同样的事情。但是,如果我使用脚本ctrl + alt + c。我没有得到相同的结果。

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

我怎样才能改变我的脚本的行为方式相同,如果它是键入CMD或WINKEY + [R

+0

也许'下运行cmd/c stop' – wOxxOm

+0

什么的/ C呢?也没有运气 – Aequitas

+0

是“停止”一个批处理文件吗? “配置”是什么意思? – wOxxOm

简单

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窗口在它的标题被执行时有该命令。所以我们保存命令窗口的标题,并等待它放弃命令(“停止”),然后关闭它。

UPDATE:cmd窗口关闭加入溶液4

+0

对不起这些为我工作 – Aequitas

+0

我得到一个“系统找不到指定的路径” – Aequitas

+0

尝试我与“cmd.exe”,而不是Comspec变量 – Schneyer