关于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读完命令行的文本才结束? 回复 1# wszhov
中间加一句:ProcessWaitClose($foo) 哦,是哦,多谢,回去试试 论坛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)
回复 4# haijie1223
嗯,和ProcessWaitClose($foo),这个应该更快些是吧 回复 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有问题?头疼死了 回复 6# wszhov
正常的啊~ 本帖最后由 wszhov 于 2013-11-10 01:41 编辑
[回复 7# haijie1223
这和系统有关么?我是win764位的,额盗版不解释,还是这个au3版本问题了?? 回复 8# wszhov
这个都有的~ 回复 9# haijie1223
额,先提交bug,在重开贴问下,我去,搞的快崩溃了 用runwait加上输出重定向>到文件再从文件读取得了 回复 11# kevinch
用的ProcessWaitClose($foo)可以搞定,那个定向的就算了,还要临时文件 回复 9# haijie1223
莫名其妙,在$lines&=&line前加了个sleep(1)正常了,难道我机器反应太快了? 大神,Run(".\")是运行当前目录的程序。我怎么写才可以运行其他路径的程序呢? 回复 14# hurenjry
..\代表上层目录,运行其他的话用完整的路径名啊
页:
[1]
2