找回密码
 加入
搜索
查看: 8520|回复: 17

[系统综合] 关于run运行cmd命令用stdout获取文本的问题[有BUG了,到bug区提问去了]

 火.. [复制链接]
发表于 2013-11-9 00:21:24 | 显示全部楼层 |阅读模式
本帖最后由 wszhov 于 2013-11-10 11:41 编辑

最近搞一个开启系统自带无线承载网,来共享手机上网的脚本,主要用到了netsh这个命令,那个wlanapi英文太差,不会搞,只好用命令行。
$foo=Run(@ComSpec & " /c " & 'netsh wlan show hostednetwork', "", @SW_HIDE,$STDOUT_CHILD)
$line = StdoutRead($foo)
现在必须加一个sleep(200)才能正确的获得,使$line获得文本 ,但有时候这个延迟不够,$line依然读取不了,怎么判断$line读完命令行的文本才结束?
发表于 2013-11-9 00:28:04 | 显示全部楼层
回复 1# wszhov
中间加一句:
ProcessWaitClose($foo)
 楼主| 发表于 2013-11-9 00:37:32 | 显示全部楼层
哦,是哦,多谢,回去试试
发表于 2013-11-9 13:05:18 | 显示全部楼层
论坛FAQ~
#include <Constants.au3>
Dim $foo, $line, $lines
$foo = Run(@ComSpec & ' /c netsh wlan show hostednetwork', "", @SW_HIDE, $STDOUT_CHILD)
$lines = ""
While 1
        $line = StdoutRead($foo)
        If @error Then ExitLoop
        $lines &= $line
WEnd
ConsoleWrite($lines & @CRLF)
 楼主| 发表于 2013-11-9 16:07:22 | 显示全部楼层
回复 4# haijie1223


    嗯,和ProcessWaitClose($foo),这个应该更快些是吧
 楼主| 发表于 2013-11-9 17:23:11 | 显示全部楼层
回复 4# haijie1223

莫名其面啊,
        $lines &= $line
这个不能连续赋值了,运行后$lines的文本如下
承载网络设置 
----------------------- 
$line能连续的读出来,
#include <Constants.au3>
Dim $foo, $line, $lines
$foo = Run(@ComSpec & ' /c netsh wlan show hostednetwork', "", @SW_HIDE, $STDOUT_CHILD)
$lines = ""
While 1
        $line = StdoutRead($foo)
        If @error Then ExitLoop
        ConsoleWrite($line) ;每次返回的都不同
        $lines &= $line ;但这里不能正确的赋值
WEnd
ConsoleWrite($lines & @CRLF)
这是为什么?你运行下有问题没,难道我电脑有问题?还是这个   $lines &= $line有问题?头疼死了
发表于 2013-11-9 19:03:01 | 显示全部楼层
回复 6# wszhov


    正常的啊~
 楼主| 发表于 2013-11-10 01:27:31 | 显示全部楼层
本帖最后由 wszhov 于 2013-11-10 01:41 编辑

[回复 7# haijie1223



这和系统有关么?我是win764位的,额盗版不解释,还是这个au3版本问题了??

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2013-11-10 10:08:40 | 显示全部楼层
回复 8# wszhov


    这个都有的~
 楼主| 发表于 2013-11-10 11:02:19 | 显示全部楼层
回复 9# haijie1223


    额,先提交bug,在重开贴问下,我去,搞的快崩溃了
发表于 2013-11-10 11:52:51 | 显示全部楼层
用runwait加上输出重定向>到文件再从文件读取得了
 楼主| 发表于 2013-11-10 12:57:48 | 显示全部楼层
回复 11# kevinch


    用的ProcessWaitClose($foo)可以搞定,那个定向的就算了,还要临时文件
 楼主| 发表于 2013-11-10 13:50:01 | 显示全部楼层
回复 9# haijie1223


    莫名其妙,在$lines&=&line前加了个sleep(1)正常了,难道我机器反应太快了?
发表于 2013-11-13 16:15:32 | 显示全部楼层
大神,Run(".\")是运行当前目录的程序。我怎么写才可以运行其他路径的程序呢?
 楼主| 发表于 2013-11-13 18:42:15 | 显示全部楼层
回复 14# hurenjry


    ..\代表上层目录,运行其他的话用完整的路径名啊
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-20 09:04 , Processed in 0.083706 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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