最近由于工作需要。需要同时打开几个cmd命令行程序窗口,进行相关操作。
例如先打开cmd.exe 然后在里面进行ping 命令,dir 命令等多个操作。同时又要再打开另外一个cmd窗口,进行其他一些操作。还要再打开一个CMD窗口,调用另外一个软件的命令行模式进行操作。
【说明:这些操作是不能简单的写个bat来实现的。因为操作CMD窗口,我实际上是在cmd里执行另外一个软件(例如plink.exe),进入它的命令行模式,进行操作)】
下面是我目前写的:Func _WinWaitActivate($title,$text,$timeout=0)
WinWait($title,$text,$timeout)
If Not WinActive($title,$text) Then WinActivate($title,$text)
WinWaitActive($title,$text,$timeout)
EndFunc
RunWait(@ComSpec & ' /c ' & 'start cmd')
_WinWaitActivate("管理员: C:\Windows\system32\cmd.exe","")
Sleep(100)
Send("cd{space}c:\download{enter}")
Send("plink.exe{enter}") ;运行plink.exe 程序
Send("-ssh -.......") ;执行相关指令 这里省略掉了
WinClose("管理员: C:\Windows\system32\cmd.exe")
但是这样,运行的时候不能进行其他操作,要不输入的东西就到其他窗口去了。因为打开这几个CMD窗口进行相关操作的时候,我可能还要用鼠标和键盘进行其他一些操作(例如在txt文档输入文字,操作电脑打开相应文件夹等等)。
请问各位大虾,这种要求怎么实现?
如果不需要同时操作多个CMD窗口(只需打开一个),但同时需要用鼠标和键盘进行其他一些操作(例如在txt文档输入文字,操作电脑打开相应文件夹等等),也就是说需要操作的的CMD窗口不在系统前端运行。
这种情况应该好实现一些吧。
拜托各位大神了!!!
另外,我还想把执行的这些指令及相关结果都输入出来txt文件,再进行相关处理。可我用StdoutRead函数只能读到还没执行plink.exe之前的字符,而进入plink软件后,在cmd窗口下输入和出现的字符就再捕获不了了,请问这个问题怎么实现。
再次请求各位帮忙解惑了。谢谢!!!! |