simxinzi 发表于 2008-7-24 14:59:21

Au3如何返回Dos窗口的输出信息?

如题,用Au3运行某DOS程序

如何在Au3中返回Dos窗口的输出信息?用Wingettext似乎不行

请各位大侠帮忙~~

[ 本帖最后由 simxinzi 于 2008-8-9 23:23 编辑 ]

martins99 发表于 2008-7-24 15:45:37

我也想知道呢

runningwater 发表于 2008-7-24 15:46:27

我的笨方法:
命令直接输出到文本文件中:
dir *.exe > c:\a.txt
之后打开c:\a.txt

runningwater 发表于 2008-7-24 16:05:08

;注意:回显截取只支持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

ken0137 发表于 2008-7-26 14:53:09

原帖由 runningwater 于 2008-7-24 16:05 发表 http://www.autoitx.com/images/common/back.gif
;注意:回显截取只支持Run而不是RunWait
#include
Opt("MustDeclareVars",1)
_test()
Func _test()
Local $foo,$line,$lines
$foo = Run(@ComSpec & " /c sc query Alerter", @SystemDir, @SW_HIDE, $STDOUT_C ...
我觉得说得不是非常正确
楼主可以运行这样的语句
RunWait(@ComSpec & ' /c netstat -ano > ' & @TempDir & '\NetSOT.tmp', "", @SW_HIDE)
然后你去TempDir & '\NetSOT.tmp看看这个文件的内容(用记事本打开)
其实这个NetSOT.tmp文件就是你要的回显内容了
接着就先读取行数,然后显示出来
if _FileReadToArray(@TempDir & '\NetSOT.tmp', $DataArray) <> 0 Then
   For $I = 5 To $DataArray - 1
这个代码来自




AutoIt 版本: 3.2.5.0(第一版)
脚本作者: allenmou
        Email: allenmou@163.com
        QQ/TM: 402090001
脚本功能: 本机开放端口查看

[ 本帖最后由 ken0137 于 2008-7-26 14:54 编辑 ]

kakinkgb 发表于 2008-7-26 21:04:37

发个例子给需要的人

#include <Constants.au3>
$foo = Run(@ComSpec, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
ProcessWaitClose($foo)
$text=StdoutRead($foo)
MsgBox(0, "STDOUT read:", $text)

llztt 发表于 2008-7-26 21:43:12

原帖由 ken0137 于 2008-7-26 14:53 发表 http://www.autoitx.com/images/common/back.gif

我觉得说得不是非常正确
楼主可以运行这样的语句
RunWait(@ComSpec & ' /c netstat -ano > ' & @TempDir & '\NetSOT.tmp', "", @SW_HIDE)
然后你去TempDir & '\NetSOT.tmp看看这个文件的内容(用记事本打开)
...

你说的根本就不是一回事, 就提供的方法技术而言, 人家的更高一筹,不用临时文件的才更简洁

sanhen 发表于 2008-7-26 21:52:10

条条大道通罗马。。。看个人的喜好的了。

learning 发表于 2009-8-6 02:11:51

#include
$foo = Run(@ComSpec, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
ProcessWaitClose($foo)
$text=StdoutRead($foo)
MsgBox(0, "STDOUT read:", $text)
kakinkgb 发表于 2008-7-26 21:04 http://www.autoitx.com/images/common/back.gif
太谢谢了,这个例子非常好

auto 发表于 2009-8-10 19:54:14

试了一下..好像无返回结果

redapple2008 发表于 2009-10-10 23:32:10

回显截取只支持Run而不能RunWait

haijie1223 发表于 2011-3-25 10:47:03

不错这几天的研究正需要

hpdeskjet 发表于 2011-7-7 10:32:41

支持下,学习学习

xlj310 发表于 2011-12-6 09:11:11

学习了,很好,很强大

雨林GG 发表于 2012-2-23 08:36:32

搜索资料到这儿,谢谢楼上各位!
页: [1] 2
查看完整版本: Au3如何返回Dos窗口的输出信息?