找回密码
 加入
搜索
查看: 3905|回复: 6

[网络通信] 麻烦大了。如何提取CMD窗口的所有文字。非(stdout)以解决

  [复制链接]
发表于 2011-4-24 11:36:07 | 显示全部楼层 |阅读模式
本帖最后由 tmkmk 于 2011-4-24 12:30 编辑

如题。通过StdoutRead不能实现我的操作。我所做的操作是一个连续操作.在CMD窗口中的一个连续性操作.比如说 我执行
diskpart
list vol
到这里了以后会给出硬盘分区的一些信息.如下面
卷 ###  Ltr  标签        Fs     类型        大小     状况     信息
----------  ---  -----------  -----  ----------  -------  ---------  --------
卷 0     F                       DVD-ROM         0 B
卷 1     G                       DVD-ROM         0 B
卷 2     C                NTFS   磁盘分区          15 GB  状态良好       系统

卷 3     D                NTFS   磁盘分区          98 GB  状态良好

卷 4     E                NTFS   磁盘分区          37 GB  状态良好

现在问题来了.如果插入移动硬盘.而每次执行diskpart后,卷标号都不一样.会变动的.有时候在0位置有时候在1.有时候又跑到最后.所以我需要把这里面的信息给提取出来.然后在程序里分析.最后发送send命令在CMD窗口里操作.而不能执行run

问题解决了,可是不知道怎么设置
发表于 2011-4-24 12:09:00 | 显示全部楼层
本帖最后由 the886 于 2011-4-24 12:10 编辑

把命令结果保存到txt 在用AU3 正则等读取txt

首先你要说你要达到什么目的,这样人家才好帮你
 楼主| 发表于 2011-4-24 12:26:13 | 显示全部楼层
汗~写清楚了啊.不过自己找到解决方法了,附上源码,供其他新手参考;
Run("cmd")
WinWait("[CLASS:ConsoleWindowClass]")
WinActivate("[CLASS:ConsoleWindowClass]")
Send("dir{ENTER}")
$array=WinGetPos ("[CLASS:ConsoleWindowClass]")
$hx="X坐标:"&$array[0]&@CRLF&"Y 坐标:"&$array[1]&@CRLF&"宽度"&$array[2]&@CRLF&"高度"&$array[3]
MouseMove($array[0]+7,$array[1]+25)
MouseClick("right")
Send("k")
MouseClickDrag("left",$array[0]+7,$array[1]+25,$array[0]-25+$array[2],$array[1]-10+$array[3])
;MouseMove($array[0]-30+$array[2],$array[1]-10+$array[3])
MouseClick("right")
MsgBox(0,"X坐标",$hx)
$xx=ClipGet()
MsgBox(0,"X坐标",$xx)
WinActivate("[CLASS:ConsoleWindowClass]")
Send("exit{ENTER}")
发表于 2011-4-24 12:28:03 | 显示全部楼层
不太明白stdout流,不过下面的代码你可以试试
#include <Constants.au3>

FileWrite("C:\diskpart.txt", "list vol")
Local $foo = Run(@ComSpec & " /c diskpart /s C:\diskpart.txt", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
Local $line
Local $sResult
While 1
    $line = StdoutRead($foo)
    If @error Then ExitLoop
        MsgBox(0, "调试", $line)
        $sResult &= $line
Wend
MsgBox(0, "结果", $sResult)
FileDelete("C:\diskpart.txt")
发表于 2011-4-24 12:29:09 | 显示全部楼层
回显的内容直接判断你要得到盘符的信息
 楼主| 发表于 2011-4-24 12:32:35 | 显示全部楼层
我要的不只是回执,回执无法实现.我里面说的很清楚了.需要在当前cmd里面操作的
发表于 2011-4-25 15:50:56 | 显示全部楼层
回复 6# tmkmk
stdout之后再用stdin呗
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-10 20:38 , Processed in 0.080675 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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