xu409278030 发表于 2013-12-3 15:24:26

求助,怎么把控制台的信息输入到文本中。

在脚本中加入#AutoIt3Wrapper_run_debug_mode=Y后,想把控制台的信息都输入到一个文本中,就像dos里的把执行结果>1.txt 。
根据dos回显例子实验了一下,但文本中输出的是空。求路过的大大指点{:face (207):}。
#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

xu409278030 发表于 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命令就可以输出出来?是本质上不一样么?求路过的大大帮助

kevinch 发表于 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不知道这样行不行

xu409278030 发表于 2013-12-4 11:25:29

回复 3# kevinch
不行,没有输出的结果。
我想了个笨办法就是把每条语句后面都加一句输出。到是能模拟#auto3wrapper_run_debug_mode=y的输出。
真么没有可以同步控制台输出到文本的方法么,求路过的大大们帮忙{:face (117):}

afan 发表于 2013-12-4 18:29:38

回复kevinch
不行,没有输出的结果。
我想了个笨办法就是把每条语句后面都加一句输出。到是能模拟#aut ...
xu409278030 发表于 2013-12-4 11:25 http://www.autoitx.com/images/common/back.gif


    能智能到输出你所想吗…

xu409278030 发表于 2013-12-5 10:34:15

回复 5# afan
我想输出控制台的内容,是想看我的脚本运行到哪句话停了。如果我在每条语句后面都加一句ControlSend ( "log.txt - 记事本" , "" , "Edit1" , "xxxxxx"),不就能看到我运行到哪句停了了么。就是很麻烦,没有用debug那么方便了,但是避开控制台输出。

我翻了以前的帖子,有提问过这个问题的,但是也没有答案。{:1_601:}

shqf 发表于 2013-12-5 14:58:31

直接在SCITE编辑器可以看了呀,为啥多个步骤要输出 来再看呢

zch11230 发表于 2013-12-5 15:38:46

在关键位置加点msgbox啊 consolewrite之类查看一下变量什么的 也不难找到问题点
当然楼主非要想像#AutoIt3Wrapper_run_debug_mode=Y的功能可能真的需要在每一行前面加一句输出 用正则替换一下 添加起来倒也不麻烦。

ak47gglllk 发表于 2013-12-6 09:21:31

帮顶下,希望看到大神出现后的结果

wInkly_cc 发表于 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 就很好了
页: [1]
查看完整版本: 求助,怎么把控制台的信息输入到文本中。