leewger 发表于 2008-6-27 12:19:04

有没有读取命令行窗口内容的函数?

比如说,我在命令行窗口运行一个dir命令,用AU3可以读取DIR命令显示出来的内容

目的是用7za.exe解压压缩包,然后在AU3界面上显示出解压的文件,然后用文件数在确定进度条的进度:face (35):

[ 本帖最后由 leewger 于 2008-7-9 10:45 编辑 ]

顽固不化 发表于 2008-6-27 13:45:26

我也想知道怎么弄,如果靠定向输出生成的过度文件,始终觉得啰嗦一些。看到JUJUMAO原来的驱动解压,文本都是在AU3窗口显示的。
dos有个管道命令“|”,不知AU3能否实现接收管道传来的数据。

sanhen 发表于 2008-6-27 13:49:00

DOS命令的用RUN。。。
加上I/O标志即可。FAQ说明非常清楚了,为什么没人愿看一下呢?

aaax 发表于 2008-6-27 13:58:05

用i/o标志后,怎么在GUI上显示出内容呢?

顽固不化 发表于 2008-6-27 14:22:41

看到了,谢谢3恨斑斑!

Q2.5 运行DOS命令如何直接截取回显?
;注意:回显截取只支持Run而不是RunWait
#include
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

[ 本帖最后由 顽固不化 于 2008-6-27 14:24 编辑 ]

leewger 发表于 2008-6-27 15:08:39

我运行的你的代码
$lines里是空的

我把run中换成的了 dir c:\

llztt 发表于 2008-6-27 16:16:49

例子里#include <Constants.au3>

帮助里的例子也不错
#include <Constants.au3>

Local $foo = Run(@ComSpec & " /c dir foo.bar", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
Local $line
While 1
    $line = StdoutRead($foo)
    If @error Then ExitLoop
    MsgBox(0, "STDOUT read:", $line)
Wend

While 1
    $line = StderrRead($foo)
    If @error Then ExitLoop
    MsgBox(0, "STDERR read:", $line)
Wend

MsgBox(0, "Debug", "Exiting...")
页: [1]
查看完整版本: 有没有读取命令行窗口内容的函数?