[已解决]字符串连接操作的问题
本帖最后由 sv0002 于 2013-5-8 14:52 编辑帮助文件里有这样一个例子,我只是把执行的命令改了一下,并且想把命令结果保存下来,可是保存的命令结果只是第一次连接操作的结果,而不是全部,我要怎么办?
#include <Constants.au3>
Local $foo = RunWait(@ComSpec & " /c ping-n 20 www.163.com", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
Local $line,$re
While 1
$line = StdoutRead($foo)
If @error Then ExitLoop
$re &= $line
MsgBox(0, "STDOUT 读取:", $line)
Sleep(1000)
WEnd
MsgBox(0,"result",$line)
While 1
$line = StderrRead($foo)
If @error Then ExitLoop
MsgBox(0, "STDERR 读取:", $line)
WEnd
MsgBox(0,"result",$line)
MsgBox(0, "调试", "准备退出...")
#include <Constants.au3>
Local $line, $re
Local $foo = Run(@ComSpec & " /c ping-n 20 www.163.com", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
$line = StdoutRead($foo)
If @error Then ExitLoop
$re &= $line
WEnd
MsgBox(0, "", $re) 本帖最后由 xms77 于 2013-5-7 19:54 编辑
回复 1# sv0002
Win7下好像用STDoutread函数读取命令行回显不是很好啊?
#include <Constants.au3>
Local $foo = Run(@ComSpec & " /c ping-n 20 www.163.com", @SystemDir, @SW_HIDE, $STDOUT_CHILD)
Local $line,$re
While 1
Sleep(22000)
$line = StdoutRead($foo)
If @error Then ExitLoop
$re &= $line
WEnd
MsgBox(0, "STDOUT 读取:", $re) 回复 2# haijie1223
发哥,这个代码在win7下不能抓住全部的命令行回显 回复 1#8# xms77
这样可以.#include <Constants.au3>
Local $run = Run(@ComSpec & " /c ping-n 2 www.163.com", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
ProcessWaitClose($run)
MsgBox(0,"",StdoutRead($run)) 回复 8# xms77
没有win7,xp测试可以~ 回复 5# user3000
谢谢,你的方法是等待命令执行完毕,可以获取完整的命令结果。我在意的另一个地方是$re &= $line这行代码,经过测试,XP、Win2003下没问题,但Win7下不能获得期待的效果,
可能是autoit处理字符串时,存储机制和Win7的兼容配合方面有缺陷,
如果有字符串的复制函数,也许可以利用它获得期望的结果。 回复 3# xms77
谢谢,XP下测试可行,Win7要等命令执行完毕时再读缓冲区才是正确的结果。 回复 5# user3000
回复 3# xms77
回复 2# haijie1223
感谢user3000、发哥和xms77的热心帮助。
页:
[1]