wszhov 发表于 2013-11-9 00:21:24

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

本帖最后由 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读完命令行的文本才结束?

user3000 发表于 2013-11-9 00:28:04

回复 1# wszhov
中间加一句:ProcessWaitClose($foo)

wszhov 发表于 2013-11-9 00:37:32

哦,是哦,多谢,回去试试

haijie1223 发表于 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)

wszhov 发表于 2013-11-9 16:07:22

回复 4# haijie1223


    嗯,和ProcessWaitClose($foo),这个应该更快些是吧

wszhov 发表于 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有问题?头疼死了

haijie1223 发表于 2013-11-9 19:03:01

回复 6# wszhov


    正常的啊~

wszhov 发表于 2013-11-10 01:27:31

本帖最后由 wszhov 于 2013-11-10 01:41 编辑

[回复 7# haijie1223



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

haijie1223 发表于 2013-11-10 10:08:40

回复 8# wszhov


    这个都有的~

wszhov 发表于 2013-11-10 11:02:19

回复 9# haijie1223


    额,先提交bug,在重开贴问下,我去,搞的快崩溃了

kevinch 发表于 2013-11-10 11:52:51

用runwait加上输出重定向>到文件再从文件读取得了

wszhov 发表于 2013-11-10 12:57:48

回复 11# kevinch


    用的ProcessWaitClose($foo)可以搞定,那个定向的就算了,还要临时文件

wszhov 发表于 2013-11-10 13:50:01

回复 9# haijie1223


    莫名其妙,在$lines&=&line前加了个sleep(1)正常了,难道我机器反应太快了?

hurenjry 发表于 2013-11-13 16:15:32

大神,Run(".\")是运行当前目录的程序。我怎么写才可以运行其他路径的程序呢?

wszhov 发表于 2013-11-13 18:42:15

回复 14# hurenjry


    ..\代表上层目录,运行其他的话用完整的路径名啊
页: [1] 2
查看完整版本: 关于run运行cmd命令用stdout获取文本的问题[有BUG了,到bug区提问去了]