找回密码
 加入
搜索
查看: 4759|回复: 9

[AU3基础] 求助,怎么把控制台的信息输入到文本中。

  [复制链接]
发表于 2013-12-3 15:24:26 | 显示全部楼层 |阅读模式
在脚本中加入#AutoIt3Wrapper_run_debug_mode=Y后,想把控制台的信息都输入到一个文本中,就像dos里的把执行结果>1.txt 。
根据dos回显例子实验了一下,但文本中输出的是空。求路过的大大指点
#AutoIt3Wrapper_run_debug_mode=Y
Local $i
Local $sum
For  $i = 0 To 10 Step 1
        $sum = $sum + $i
Next
#include <Constants.au3>
Opt("MustDeclareVars",1)
_test()
Func _test()
Local $foo,$line,$lines
$foo = Run("C:\Users\XJ\Desktop\实验控制台输出.exe", "", @SW_HIDE, $STDOUT_CHILD)
$lines = ""
While 1
    $line = StdoutRead($foo)
    If @error Then ExitLoop
     $lines &= $line
Wend
ControlSend ( "计数.txt - 记事本" , "" , "Edit1" , @HOUR&@MIN)
ControlSend ( "计数.txt - 记事本" , "" , "Edit1" , $lines & @CRLF)
ControlSend ( "计数.txt - 记事本" , "" , "Edit1" , $lines & @CRLF)
EndFunc
 楼主| 发表于 2013-12-3 16:19:36 | 显示全部楼层
#include <Constants.au3>

Dim $foo, $line, $lines

$foo = Run(@ComSpec & " /c netstat -naop tcp", @SystemDir, @SW_HIDE, $STDOUT_CHILD)

$lines = ""

While 1

        $line = StdoutRead($foo)

        If @error Then ExitLoop

        $lines &= $line

WEnd

ConsoleWrite($lines & @CRLF)
ControlSend ( "计数.txt - 记事本" , "" , "Edit1" , $lines & @CRLF)
ControlSend ( "计数.txt - 记事本" , "" , "Edit1" , @HOUR&@MIN)
运行dos命令就可以输出出来?是本质上不一样么?求路过的大大帮助
发表于 2013-12-3 19:22:16 | 显示全部楼层
本帖最后由 kevinch 于 2013-12-3 19:24 编辑
_test()

Func _test()
Runwait("C:\Users\XJ\Desktop\实验控制台输出.exe>"""&@scriptdir&"\log.txt""", "", @SW_HIDE)
EndFunc
不知道这样行不行
 楼主| 发表于 2013-12-4 11:25:29 | 显示全部楼层
回复 3# kevinch
不行,没有输出的结果。
我想了个笨办法就是把每条语句后面都加一句输出。到是能模拟#auto3wrapper_run_debug_mode=y的输出。
真么没有可以同步控制台输出到文本的方法么,求路过的大大们帮忙
发表于 2013-12-4 18:29:38 | 显示全部楼层
回复  kevinch
不行,没有输出的结果。
我想了个笨办法就是把每条语句后面都加一句输出。到是能模拟#aut ...
xu409278030 发表于 2013-12-4 11:25



    能智能到输出你所想吗…
 楼主| 发表于 2013-12-5 10:34:15 | 显示全部楼层
回复 5# afan
我想输出控制台的内容,是想看我的脚本运行到哪句话停了。如果我在每条语句后面都加一句ControlSend ( "log.txt - 记事本" , "" , "Edit1" , "xxxxxx"),不就能看到我运行到哪句停了了么。就是很麻烦,没有用debug那么方便了,但是避开控制台输出。

我翻了以前的帖子,有提问过这个问题的,但是也没有答案。
发表于 2013-12-5 14:58:31 | 显示全部楼层
直接在SCITE编辑器可以看了呀,为啥多个步骤要输出 来再看呢
发表于 2013-12-5 15:38:46 | 显示全部楼层
在关键位置加点msgbox啊 consolewrite之类查看一下变量什么的 也不难找到问题点
当然楼主非要想像#AutoIt3Wrapper_run_debug_mode=Y的功能  可能真的需要在每一行前面加一句输出 用正则替换一下 添加起来倒也不麻烦。
发表于 2013-12-6 09:21:31 | 显示全部楼层
帮顶下,希望看到大神出现后的结果
发表于 2013-12-9 17:19:19 | 显示全部楼层
截取回显FAQ里有:
Q2.5 运行DOS命令如何直接截取回显?

;注意:回显截取只支持Run而不是RunWait
#include <Constants.au3>
Opt("MustDeclareVars",1)
_test()
Func _test()
Local $foo,$line,$lines
$foo = Run(@ComSpec & " /c sc query Alerter", @SystemDir, @SW_HIDE, $STDOUT_CHILD)
$lines = ""
While 1
    $line = StdoutRead($foo)
    If @error Then ExitLoop
     $lines &= $line
Wend
MsgBox(0,"test",$lines)
EndFunc

打印用 consolewrite 就很好了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-3 09:17 , Processed in 0.083886 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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