找回密码
 加入
搜索
查看: 1759|回复: 11

关于修改文本内容的问题

[复制链接]
发表于 2009-6-26 07:32:10 | 显示全部楼层 |阅读模式
本帖最后由 a000000 于 2009-6-26 12:59 编辑

例如我有一个ini文件里面的内容是:
[配置]                          
墙纸路径=.\墙纸                          
墙纸文件=                          
机器名前缀=ZYJT-                          
机器名位数=3                          
机器名后缀=                          
机器名颜色=15                          
日期颜色=15                          
同步时间=                          
显示机器名=是                          
显示费率=是                          
显示天气=   

我现在想只修改  显示天气=     这行,因为老贼的采集不管用了,自己又不会写采集码,所以打算曲线整合下将就用,希望高手帮忙

我用了这样:
$file = FileOpen("WBWallPaper.bak", 1)
; 检查文件是否正常打开
If $file = -1 Then
    MsgBox(0, "错误", "无法打开目标文件。")
    Exit
EndIf

FileWrite($file, "[配置]" & @CRLF)
FileWrite($file, "墙纸路径=.\墙纸 " & @CRLF)
FileWrite($file, "墙纸文件=  " & @CRLF)
FileWrite($file, "机器名前缀=ZYJT- " & @CRLF)
FileWrite($file, "机器名位数=3" & @CRLF)
FileWrite($file, "机器名后缀= " & @CRLF)
FileWrite($file, "机器名颜色=15 " & @CRLF)
FileWrite($file, "日期颜色=15" & @CRLF)
FileWrite($file, "同步时间=" & @CRLF)
FileWrite($file, "显示机器名=是" & @CRLF)
FileWrite($file, "显示费率=是 " & @CRLF)
FileWrite($file, "显示天气= " & @CRLF)

FileClose($file)

我想用au3只修改第12行,也就是:“显示天气= ”是否可以的呢?
ps:请高手指点下用啥命令 ,找了半天帮助,没找到,论坛里的帖子也找了,实在没弄明白,谢谢啦
 楼主| 发表于 2009-6-26 08:15:25 | 显示全部楼层
寂寞高手一时俱无踪
发表于 2009-6-26 08:28:29 | 显示全部楼层
_ReplaceStringInFile 或者_FileWriteToLine 行不行??
 楼主| 发表于 2009-6-26 10:30:05 | 显示全部楼层
本帖最后由 a000000 于 2009-6-26 12:41 编辑

还是没搞定,要求是只修改“显示天气= ”,因为别的行数据都是变量
 楼主| 发表于 2009-6-26 10:38:26 | 显示全部楼层
其实他的原始文件是这样的:
[配置]                          
墙纸路径=.\墙纸                          
墙纸文件=                          
机器名前缀=ZYJT-                          
机器名位数=3                          
机器名后缀=                          
机器名颜色=15                          
日期颜色=15                          
同步时间=                          
显示机器名=是                          
显示费率=是                          
显示天气=   

我现在想只修改  显示天气=     这行,因为老贼的采集不管用了,自己又不会写采集码,所以打算曲线整合下将就用,希望高手帮忙
 楼主| 发表于 2009-6-26 10:39:36 | 显示全部楼层
用批处理写了个,可是弄了半天最后宣告失败:
@echo off
del WBWallPaper.ini
@echo off & SetLocal EnableDelayedExpansion

for /f "tokens=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26" %%a in (原始WBWallPaper.ini) do (
    set /a flag+=1
    if !flag! equ 12 (>>WBWallPaper.ini echo 显示天气=) else (>>WBWallPaper.ini echo %%a  %%b %%c %%d %%e %%f %%g %%h %%i %%j %%k %%l %%m %%n %%o %%p %%q %%r %%s %%t %%u %%v %%w %%x %%y %%z)
)

START /min /wait WEATHER.EXE

type WBWallPaper.ini>WBWallPaper.bak

del WBWallPaper.ini

@echo off & SetLocal EnableDelayedExpansion

for /f "tokens=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26" %%a in (.\WBWallPaper.bak) do (
    set /a flag+=1
    if !flag! equ 12 (>>.\WBWallPaper.ini echo 显示天气=是) else (>>.\WBWallPaper.ini echo %%a  %%b %%c %%d %%e %%f %%g %%h %%i %%j %%k %%l %%m %%n %%o %%p %%q %%r %%s %%t %%u %%v %%w %%x %%y %%z)
)

START /min WEATHER.js

del WBWallPaper.bak
 楼主| 发表于 2009-6-26 10:47:19 | 显示全部楼层
不 知道为啥:
走到这个地方就不执行了:

@echo off & SetLocal EnableDelayedExpansion

for /f "tokens=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26" %%a in (.\WBWallPaper.bak) do (
    set /a flag+=1
    if !flag! equ 12 (>>.\WBWallPaper.ini echo 显示天气=是) else (>>.\WBWallPaper.ini echo %%a  %%b %%c %%d %%e %%f %%g %%h %%i %%j %%k %%l %%m %%n %%o %%p %%q %%r %%s %%t %%u %%v %%w %%x %%y %%z)
)
发表于 2009-6-26 11:30:18 | 显示全部楼层
你可以读取行,对整行进行修改即可,不难!
 楼主| 发表于 2009-6-26 12:31:48 | 显示全部楼层
高手帮下忙
 楼主| 发表于 2009-6-26 12:42:35 | 显示全部楼层
在线等待...........
发表于 2009-6-26 12:54:24 | 显示全部楼层
用这个试试 IniWrite ( "文件名", "字段名", "键名", "值" )

IniWrite ( "test.ini", "配置", "显示天气", "修改的值" )
 楼主| 发表于 2009-6-26 12:58:40 | 显示全部楼层
谢谢楼上,代码很好用
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-1 09:29 , Processed in 0.071686 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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