wlyxi1129 发表于 2012-3-11 09:11:32

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

最近由于工作需要。需要同时打开几个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窗口下输入和出现的字符就再捕获不了了,请问这个问题怎么实现。   
      再次请求各位帮忙解惑了。谢谢!!!!

wlyxi1129 发表于 2012-3-11 18:59:23

各位大虾 帮忙看看啊{:face (319):}

nmgwddj 发表于 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

wlyxi1129 发表于 2012-3-11 21:52:11

运行dos命令截取回显应该可以实现你的要求,我没看懂你说的什么意思。
运行DOS命令如何直接截取回显?
;注 ...
nmgwddj 发表于 2012-3-11 20:39 http://www.autoitx.com/images/common/back.gif

你提供的这种方法我试过,不行。这种只能捕获到cmd本身支持的一些指令(例如 dir ,move 等)。而我是通过cmd运行某个命令行形式的软件,然后执行这个软件的一些相关命令操作。(这些操作指令还是在打开的CMD窗口中)我想捕获的是进行这些操作后出现在CMD中的所有内容。
而通过上面的方法是不行的。

nmgwddj 发表于 2012-3-11 22:14:37

plink.exe是什么东西,功能不能自己做吗?

wlyxi1129 发表于 2012-3-12 14:53:18

plink 是PuTTY 这个软件的 CMD命令行形式
而 PuTTY是一个 telnet、rlogin和ssh的客户端工具。它是图形化界面的软件。
而通过cmd去运行 plink,执行相关命令, 相当于用PUTTY 这个图形化界面软件进行相关操作。

我现在就是想在CMD里,通过 执行plink ,并且执行它的相关命令,得到相应的结果并捕获输出出来。
而不是去手动 操作PUTTY 这个软件。

nmgwddj 发表于 2012-3-12 17:36:51

无奈,帮顶,看各位前辈有没有什么方法

xayle 发表于 2012-3-12 17:43:27

pink 用于ssh fanqiang使用并没有需要交互式操作的地方啊?

netegg 发表于 2012-3-13 03:41:31

本帖最后由 netegg 于 2012-3-13 03:43 编辑

_WinAPI_CreateSemaphore大概这个可以,试试吧

不过很怀疑lz这么做有什么好处

wlyxi1129 发表于 2012-3-13 21:11:50

_WinAPI_CreateSemaphore大概这个可以,试试吧

不过很怀疑lz这么做有什么好处
netegg 发表于 2012-3-13 03:41 http://www.autoitx.com/images/common/back.gif


我是工作需要。在PCwindow操作系统上,要通过SSH登陆到公司产品中的linux系统里面,执行相关操作。

wlyxi1129 发表于 2012-3-13 21:14:53

pink 用于ssh fanqiang使用并没有需要交互式操作的地方啊?
xayle 发表于 2012-3-12 17:43 http://www.autoitx.com/images/common/back.gif

我并不是需要fanqiang 而是工作需要,登陆到产品内的linux系统里面进行操作。

netegg 发表于 2012-3-13 21:21:11

回复 12# wlyxi1129
两(多)个控制台如果是独立的话,用上面那个函数创建并发对象试试吧,没折腾过这些

zzbtlc 发表于 2012-3-14 16:24:19

收藏一下,支持
页: [1]
查看完整版本: 请问怎么实现同时打开多个CMD命令行程序窗口执行相关软件程序进行操作