a000000 发表于 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:请高手指点下用啥命令 ,找了半天帮助,没找到,论坛里的帖子也找了,实在没弄明白,谢谢啦

a000000 发表于 2009-6-26 08:15:25

寂寞高手一时俱无踪

dakai 发表于 2009-6-26 08:28:29

_ReplaceStringInFile 或者_FileWriteToLine 行不行??

a000000 发表于 2009-6-26 10:30:05

本帖最后由 a000000 于 2009-6-26 12:41 编辑

还是没搞定,要求是只修改“显示天气= ”,因为别的行数据都是变量

a000000 发表于 2009-6-26 10:38:26

其实他的原始文件是这样的:
[配置]                        
墙纸路径=.\墙纸                        
墙纸文件=                        
机器名前缀=ZYJT-                        
机器名位数=3                        
机器名后缀=                        
机器名颜色=15                        
日期颜色=15                        
同步时间=                        
显示机器名=是                        
显示费率=是                        
显示天气=   

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

a000000 发表于 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

a000000 发表于 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)
)

autosonix 发表于 2009-6-26 11:30:18

你可以读取行,对整行进行修改即可,不难!

a000000 发表于 2009-6-26 12:31:48

高手帮下忙

a000000 发表于 2009-6-26 12:42:35

在线等待...........

都市浪子666 发表于 2009-6-26 12:54:24

用这个试试 IniWrite ( "文件名", "字段名", "键名", "值" )

IniWrite ( "test.ini", "配置", "显示天气", "修改的值" )

a000000 发表于 2009-6-26 12:58:40

谢谢楼上,代码很好用
页: [1]
查看完整版本: 关于修改文本内容的问题