麻烦大了。如何提取CMD窗口的所有文字。非(stdout)以解决
本帖最后由 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
问题解决了,可是不知道怎么设置 本帖最后由 the886 于 2011-4-24 12:10 编辑
把命令结果保存到txt 在用AU3 正则等读取txt
首先你要说你要达到什么目的,这样人家才好帮你 汗~写清楚了啊.不过自己找到解决方法了,附上源码,供其他新手参考;Run("cmd")
WinWait("")
WinActivate("")
Send("dir{ENTER}")
$array=WinGetPos ("")
$hx="X坐标:"&$array&@CRLF&"Y 坐标:"&$array&@CRLF&"宽度"&$array&@CRLF&"高度"&$array
MouseMove($array+7,$array+25)
MouseClick("right")
Send("k")
MouseClickDrag("left",$array+7,$array+25,$array-25+$array,$array-10+$array)
;MouseMove($array-30+$array,$array-10+$array)
MouseClick("right")
MsgBox(0,"X坐标",$hx)
$xx=ClipGet()
MsgBox(0,"X坐标",$xx)
WinActivate("")
Send("exit{ENTER}")
不太明白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")
回显的内容直接判断你要得到盘符的信息 我要的不只是回执,回执无法实现.我里面说的很清楚了.需要在当前cmd里面操作的 回复 6# tmkmk
stdout之后再用stdin呗
页:
[1]