本帖最后由 CCM 于 2018-1-4 15:38 编辑
不好意思,之前叙述不清楚。
目前有一个config.xml档,里面大概数百行,就是一些功能1或0这样,结构都如下面这样表示:
<setting name="Export">
<value>0</value>
</setting>
<setting name="updateSwitch">
<value>1</value>
</setting>
<setting name="ELEC_DOC_SETTING">
<value>3</value>
</setting>
<setting name="FILE_PATH">
<value>1</value>
</setting>
我想在这几百行里面找到红字部分updateSwitch,将value值由1改成0,但麻烦的是这三行字的位置在config.xml内并不固定,不然就可以指定行数来覆盖,且由于不同电脑内的值大不相同,所以也不能直接覆盖这个档案。
我用FileWrite(@DesktopDir & "\A.txt", $sSRERe)结果只写入$sSource的内容,前后都被清空,这两天在论坛寻找了几个类似的范例,不过能力有限,实在改不出来,只好请大神们再帮帮忙。
麻烦大家了。
后来用 找 替换 这两个关键字找到一篇文章,按文章修改已经可以了。
附上代码,以利后人查询使用。
谢谢大家。#include <file.au3>
$countline = _FileCountLines(@ScriptDir & '\A.txt')
$contentline = FileReadLine(@ScriptDir & '\A.txt')
For $i = 1 To $countline Step 1
$content = FileReadLine(@ScriptDir & '\A.txt', $i)
If @error Then Exit
If StringRegExp($content, ' <setting name="updateSwitch">', 0) = 0 Then ContinueLoop;;;;如果该行不匹配就继续读取、检查下一行
_FileWriteToLine(@ScriptDir & '\A.txt', $i + 1, ' <value>0</value>', 1);因为要改的是目标下一行,所以$i+1并用新行覆盖旧行
Next
|