找回密码
 加入
搜索
查看: 6549|回复: 13

[系统综合] 请问怎么实现同时打开多个CMD命令行程序窗口执行相关软件程序进行操作

 火.. [复制链接]
发表于 2012-3-11 09:11:32 | 显示全部楼层 |阅读模式
最近由于工作需要。需要同时打开几个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窗口下输入和出现的字符就再捕获不了了,请问这个问题怎么实现。     
        再次请求各位帮忙解惑了。谢谢!!!!
 楼主| 发表于 2012-3-11 18:59:23 | 显示全部楼层
各位大虾 帮忙看看啊
发表于 2012-3-11 20:39:01 | 显示全部楼层
运行dos命令截取回显应该可以实现你的要求,我没看懂你说的什么意思。
运行DOS命令如何直接截取回显?
;注意:回显截取只支持Run而不是RunWait
#include <Constants.au3>
Opt("MustDeclareVars",1)
_test()
Func _test()
Local $foo,$line,$lines
$foo = Run(@ComSpec & " /c sc query Alerter", @SystemDir, @SW_HIDE, $STDOUT_CHILD)
$lines = ""
While 1
    $line = StdoutRead($foo)
    If @error Then ExitLoop
     $lines &= $line
Wend
MsgBox(0,"test",$lines)
EndFunc
 楼主| 发表于 2012-3-11 21:52:11 | 显示全部楼层
运行dos命令截取回显应该可以实现你的要求,我没看懂你说的什么意思。
运行DOS命令如何直接截取回显?
;注 ...
nmgwddj 发表于 2012-3-11 20:39


你提供的这种方法我试过,不行。这种只能捕获到cmd本身支持的一些指令(例如 dir ,move 等)。而我是通过cmd运行某个命令行形式的软件,然后执行这个软件的一些相关命令操作。(这些操作指令还是在打开的CMD窗口中)我想捕获的是进行这些操作后出现在CMD中的所有内容。
而通过上面的方法是不行的。
发表于 2012-3-11 22:14:37 | 显示全部楼层
plink.exe是什么东西,功能不能自己做吗?
 楼主| 发表于 2012-3-12 14:53:18 | 显示全部楼层
plink 是  PuTTY 这个软件的 CMD命令行形式
而 PuTTY  是一个 telnet、rlogin和ssh的客户端工具。它是图形化界面的软件。
而通过cmd去运行 plink,执行相关命令, 相当于用PUTTY 这个图形化界面软件进行相关操作。

我现在就是想在CMD里,通过 执行plink ,并且执行它的相关命令,得到相应的结果并捕获输出出来。
而不是去手动 操作PUTTY 这个软件。
发表于 2012-3-12 17:36:51 | 显示全部楼层
无奈,帮顶,看各位前辈有没有什么方法
发表于 2012-3-12 17:43:27 | 显示全部楼层
pink 用于ssh fanqiang使用并没有需要交互式操作的地方啊?
发表于 2012-3-13 03:41:31 | 显示全部楼层
本帖最后由 netegg 于 2012-3-13 03:43 编辑

_WinAPI_CreateSemaphore大概这个可以,试试吧

不过很怀疑lz这么做有什么好处
 楼主| 发表于 2012-3-13 21:11:50 | 显示全部楼层
_WinAPI_CreateSemaphore大概这个可以,试试吧

不过很怀疑lz这么做有什么好处
netegg 发表于 2012-3-13 03:41



我是工作需要。在PCwindow操作系统上,要通过SSH登陆到公司产品中的linux系统里面,执行相关操作。
 楼主| 发表于 2012-3-13 21:14:53 | 显示全部楼层
pink 用于ssh fanqiang使用并没有需要交互式操作的地方啊?
xayle 发表于 2012-3-12 17:43


我并不是需要fanqiang 而是工作需要,登陆到产品内的linux系统里面进行操作。
发表于 2012-3-13 21:21:11 | 显示全部楼层
回复 12# wlyxi1129
两(多)个控制台如果是独立的话,用上面那个函数创建并发对象试试吧,没折腾过这些
发表于 2012-3-14 16:24:19 | 显示全部楼层
收藏一下,支持
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-29 09:02 , Processed in 0.076293 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表