找回密码
 加入
搜索
查看: 14999|回复: 37

[系统综合] 获取文本本内容出现的问题【已解决】

 火.. [复制链接]
发表于 2011-12-28 18:30:32 | 显示全部楼层 |阅读模式
本帖最后由 FateSky 于 2011-12-28 22:19 编辑
#include <String.au3>
#include <Array.au3>
$file=FileOpen("H:\Program Files\TPM\Client\Data\Strategy\Strategy_15.dat",0)
$file3=FileOpen("E:\2.txt",2)        
Sleep(500)
While 1
        $line2=FileReadLine($file)
        If @error = -1 Then ExitLoop
                ;MsgBox(0,"",$line2)
        If StringInStr($line2, "</Name>") <>0 Then
                $a = _StringBetween($line2, '<Name>', '</Name>')
                $str=_ArrayToString($a,"/")
                FileWrite($file3,$str)
        EndIf
        
WEnd
[code][/code]
我写了个方法取*.dat文件里面<Name>..</Name>中的内容,保存到另外一个文件中,但是获取不到,请大家帮忙看看是什么原因,非常感谢!
发表于 2011-12-28 18:41:19 | 显示全部楼层
本帖最后由 afan 于 2011-12-28 18:53 编辑
#include <String.au3>
#include <Array.au3>

$file = FileRead("H:\Program Files\TPM\Client\Data\Strategy\Strategy_15.dat")
If $file = '' Then Exit MsgBox(48, '问题', '未读取到任何字符')
$file3 = FileOpen("E:\2.txt", 2)
$a = _StringBetween($file, '<Name>', '</Name>')
$str = _ArrayToString($a, "/")
FileWrite($file3, $str)
FileClose($file3)
 楼主| 发表于 2011-12-28 18:52:06 | 显示全部楼层
回复 2# afan


    不行啊,根本就读不出来,为什么不加循环啊?里面有多个<Name></Name>,另外你的代码中也没有变量$line2,能不能加你的QQ或其他联系方式,我这个问题很急,想跟你学习学习,非常感激,谢谢!
发表于 2011-12-28 18:55:58 | 显示全部楼层
回复 3# FateSky


    $line2 应该是 $file,已修改了,你再试试~
另外,你的“根本就读不出来”是什么状况?弹出了消息框?还是?

p.s,为什么你就不愿意贴出需要处理的文件“字符串内容”呢?
 楼主| 发表于 2011-12-28 19:04:09 | 显示全部楼层
回复 4# afan


    你的代码我改过了,试过,没有反应,在用我的方法去执行时,必须要把这个文件打开修改另存一下,才可以正常取出来,所以我不知道是什么原因,我的这个文本里面的内容如下,你看一下<?xml version="1.0" encoding="utf-8"?><RESPONSE><CMD ProcessFlag="0" ProcessInfo="2011-12-26 10:08:31 AB30BBA98E4F18EA912E155C6952A6E85E22D8CE CE4201C4A93AE0BBE9B42AA9679BB8835D6DEA20">STRATEGYQUERY</CMD><CURSOR Now="1" Count="5" Total="4"/><TABLES><TABLE ID="t_strategy"/></TABLES><TABLE ID="t_strategy"><Fields><Field ID="Id" Index="1"/><Field ID="Name" Index="2"/><Field ID="StrategyGroupId" Index="3"/><Field ID="IsSystemDefault" Index="4"/><Field ID="IsActive" Index="5"/><Field ID="Priority" Index="6"/><Field ID="StrategyCondition" Index="7"/><Field ID="ValidTime" Index="8"/><Field ID="ExpireTime" Index="9"/><Field ID="TargetCondition" Index="10"/><Field ID="Action" Index="11"/><Field ID="LastModifyUser" Index="12"/><Field ID="LastModifyTime" Index="13"/></Fields><ROW><Id>1</Id><Name>SystemProcess_csrss</Name><StrategyGroupId>262145</StrategyGroupId><IsSystemDefault>1</IsSystemDefault><IsActive>1</IsActive><Priority>0</Priority><StrategyCondition>NONE</StrategyCondition><ValidTime>2000-01-01 00:00:00</ValidTime><ExpireTime>2030-01-01 00:00:00</ExpireTime><TargetCondition><CLT_PROC_NAME>csrss.exe</CLT_PROC_NAME></TargetCondition><Action>1</Action><LastModifyUser>0</LastModifyUser><LastModifyTime>2011-12-23 11:28:23</LastModifyTime></ROW><ROW><Id>16</Id><Name>SMTP邮件加密控制</Name><StrategyGroupId>4194306</StrategyGroupId><IsSystemDefault>0</IsSystemDefault><IsActive>1</IsActive><Priority>1</Priority><StrategyCondition><CLT_ONLINESTATUS>ALLLINE</CLT_ONLINESTATUS><CLT_WORKMODESTATUS>UNWORKMODE</CLT_WORKMODESTATUS><CLT_WORKMODENAME>WORKALL</CLT_WORKMODENAME><WEEK_CHOICE>0</WEEK_CHOICE><CLT_OPERATETIME><STR_START_TIME>00:00</STR_START_TIME><STR_END_TIME>23:5</STR_END_TIME></CLT_OPERATETIME></StrategyCondition><ValidTime>2011-12-23 16:05:09</ValidTime><ExpireTime>2111-12-31 00:00:00</ExpireTime><TargetCondition><SMTP_CONTROL>1</SMTP_CONTROL></TargetCondition><Action>1</Action><LastModifyUser>1</LastModifyUser><LastModifyTime>2011-12-23 16:04:26</LastModifyTime></ROW><ROW><Id>14</Id><Name>http协议加密</Name><StrategyGroupId>1048577</StrategyGroupId><IsSystemDefault>0</IsSystemDefault><IsActive>1</IsActive><Priority>2</Priority><StrategyCondition><CLT_ONLINESTATUS>ALLLINE</CLT_ONLINESTATUS><CLT_WORKMODESTATUS>UNWORKMODE</CLT_WORKMODESTATUS><CLT_WORKMODENAME>WORKALL</CLT_WORKMODENAME><WEEK_CHOICE>0</WEEK_CHOICE><CLT_OPERATETIME><STR_START_TIME>00:00</STR_START_TIME><STR_END_TIME>23:5</STR_END_TIME></CLT_OPERATETIME></StrategyCondition><ValidTime>2011-12-23 15:31:33</ValidTime><ExpireTime>2111-12-31 00:00:00</ExpireTime><TargetCondition></TargetCondition><Action>1</Action><LastModifyUser>1</LastModifyUser><LastModifyTime>2011-12-23 15:30:41</LastModifyTime></ROW></TABLE></RESPONSE>
发表于 2011-12-28 19:12:15 | 显示全部楼层
本帖最后由 afan 于 2011-12-28 19:23 编辑

回复 5# FateSky


    没有弹出“未读取到任何字符”消息?随即结束了?

另外,将你上面贴出的字符串保存为H:\Program Files\TPM\Client\Data\Strategy\Strategy_15.dat,再测试2#的代码是OK的。
发表于 2011-12-28 19:20:29 | 显示全部楼层
MsgBox(0, '', FileRead("H:\Program Files\TPM\Client\Data\Strategy\Strategy_15.dat"))
这样弹出的消息框有内容吗?如果没有
FileCopy("H:\Program Files\TPM\Client\Data\Strategy\Strategy_15.dat", "tmp.dat")
MsgBox(48, '', FileRead("tmp.dat"))
这样弹出的消息框有内容吗?
发表于 2011-12-28 19:48:30 | 显示全部楼层
本帖最后由 131738 于 2011-12-28 19:51 编辑

回复 5# FateSky

告诉你一个调试方法,见图:



光标移到你要想查看结果的变量上,点图中的菜单,再运行脚本,在编辑器底部会显示变量的当前值

可以根据这个判断问题。。。同一次运行时间内可以调试无限多个变量。。。

本帖子中包含更多资源

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

×
发表于 2011-12-28 20:05:06 | 显示全部楼层
回复 7# afan

_ArrayToString 的分隔符改为 @CRLF ,结果要直观些吧。。。。呵呵
发表于 2011-12-28 20:06:11 | 显示全部楼层
回复 9# 131738


    那个是他写的,我没改,呵呵
发表于 2011-12-28 20:06:44 | 显示全部楼层
学了个 _StringBetween 函数用法!
发表于 2011-12-28 20:11:16 | 显示全部楼层
回复  131738


    那个是他写的,我没改,呵呵
afan 发表于 2011-12-28 20:06


他没该,我测试时该了,觉得比结果在一行要直观些,当然要看使用者的需要了。
 楼主| 发表于 2011-12-28 21:08:13 | 显示全部楼层
回复 7# afan [/
    那个文档的内容复制出来是可以取到的,但是源文件的内容确实取不出来,要不我给你发过去,你试试,这个问题纠结我一天了,我不知道原因出在哪,你帮忙解决一下
发表于 2011-12-28 21:08:56 | 显示全部楼层
回复 13# FateSky


    上传附件
 楼主| 发表于 2011-12-28 21:12:03 | 显示全部楼层
回复 14# afan

本帖子中包含更多资源

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

×
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-1 07:10 , Processed in 0.086288 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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