找回密码
 加入
搜索
查看: 2237|回复: 4

[AU3基础] 为啥发送命令行命令得到的回显有时候全有时候不全,谁能解决。

  [复制链接]
发表于 2012-5-5 18:24:32 | 显示全部楼层 |阅读模式
我就是挪用了一下新手帮助里面的那个关于cmd命令回显的方法。
#include <Constants.au3>
Opt("MustDeclareVars",1)
_test()
Func _test()
Local $foo,$line,$lines
$foo = Run(@ComSpec & " /k nbtstat -a 192.168.0.54", @SystemDir, @SW_HIDE, $STDOUT_CHILD)
$lines = ""
While 1
    $line = StdoutRead($foo)
    If @error Then ExitLoop
     $lines &= $line
Wend
;MsgBox(0,"test",$foo)
MsgBox(0,"test",$lines)
EndFunc

评分

参与人数 1金钱 -10 贡献 -2 收起 理由
user3000 -10 -2 提问帖应该发在提问区!

查看全部评分

发表于 2012-5-5 21:35:49 | 显示全部楼层
读取DOS回显有两种方式, 楼主放出的代码就是其一, 但此方法因 DOS 命令所花费时间过多而会读取失败或获取数据不全.

另一种方法, 稍稍搜索论坛就看到了. 不用循环模式读取, 而是等等进程结束后一次性读取:
#include <Constants.au3>
$foo = Run(@ComSpec & " /k nbtstat -a 192.168.0.54", @SystemDir, @SW_HIDE, $STDOUT_CHILD)
ProcessWaitClose($foo)
$text=StdoutRead($foo)
MsgBox(0,"test",$text)
第2种方法能正确读取到这个命令行的回显, 而且代码相对简洁多了.

早有发私信给楼主, 但这里也放上回复, 方便他人搜索查看!

评分

参与人数 4金钱 +89 贡献 +4 收起 理由
502762378 + 40 收藏
xms77 + 30 + 3 不错的方法二
netegg + 9 + 1 不错
sbtddh + 10 谢谢

查看全部评分

 楼主| 发表于 2012-5-5 22:31:21 | 显示全部楼层
回复 2# user3000


    太感谢了。

评分

参与人数 1金钱 +10 收起 理由
user3000 + 10 还你钱, 请编辑帖标题加入'已解决'

查看全部评分

发表于 2012-5-28 16:15:53 | 显示全部楼层
这方法不错,必须支持
发表于 2012-5-30 21:18:47 | 显示全部楼层
回复 2# user3000
我也遇到过类似的问题,也是采用帮助里面的代码,后来改了就可以了,只是忘了怎么改了,呵呵,记性太差了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-27 17:36 , Processed in 0.094681 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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