关于一个类ini文件的分析和转换的vbs实现
来源:互联网 发布:mac系统导出照片到手机 编辑:程序博客网 时间:2024/06/05 23:45
起因:
事情是这样子的:最近使用一个叫msmanager的数据库工具,英文界面,但有russian语的语言文件。然后在找了一个旧版本的chinese语言文件,发现里面的字段不太一样,就想做一个比对工具,使用russian更新chinese语言文件,故有了本脚本。
过程:
需求:
1.自动分析每块([xxx]开头的每一个块),chinese中没有的块从russian中复制过来
2.分析每块中的字段,chinese中没有的字段从russian中复制过来
分析:
1.块可以通过空行分割
2.字段可以通过split分割
实现:
最终的代码实现如下:(注释掉的msgbox为调试的时候用的)
'本程序需刨除一切异常,否则报错:块间空两行、末尾空行、块间未空行'本程序实现思路:'可用条件:按=分割\按vbcrlf分割\按空行分割(vbcrlf&vbcrlf)'流程:块比对 -> 行比对'set FSO = CreateObject("scripting.FileSystemObject")'open or create fileSet Filec = FSO.OpenTextFile(".\chinese.lng",1,False)Set Filer = FSO.OpenTextFile(".\russian.lng",1,False)set Filew = FSO.CreateTextFile(".\result.txt", true)'按空行分割文件regc = Split(Filec.ReadAll(),vbcrlf&vbcrlf)regr = Split(Filer.ReadAll(),vbcrlf&vbcrlf)'msgbox "regc块数:" & ubound(regc)'msgbox "regr块数:" & ubound(regr) for reg_r = 0 to ubound(regr) mmark = "reg_no_mark"for reg_c = 0 to ubound(regc) '############第一层双循环,块比对(第一行[]比对)#### 'msgbox "regr第" & reg_r & "块:" & vbcrlf & regr(reg_r) 'msgbox "regc第" & reg_C & "块:" & vbcrlf & regC(reg_C) liner = Split(regr(reg_r) , vbcrlf) linec = Split(regc(reg_c) , vbcrlf) '每块分割为行 'msgbox UBound(Split(regr(reg_r) , vbcrlf) ) 'msgbox UBound(Split(regr(reg_c) , vbcrlf) ) if StrComp(liner(0) , linec(0), 1 ) = 0 then 'msgbox "r第" & reg_r & "块:" & liner(0) & vbcrlf & " c第" & reg_c & "块:" & linec(0) filew.writeline liner(0) '找到匹配块,[XXXX]写入文件 mmark = "reg_have_mark" for line_r = 1 to ubound(liner) mark = "line_no_mark" for line_c = 1 to ubound(linec) '##########第二层双循环,块中每行比对## 'msgbox "regr第" & reg_r & "块第" & line_r & "行:" & vbcrlf & liner(line_r) 'msgbox "regc第" & reg_C & "快第" & line_c & "行:" & vbcrlf & linec(line_c) linerf = Split(liner(line_r) , "=")(0) linecf = Split(linec(line_c) , "=")(0) if StrComp(linerf , linecf ,1) = 0 then 'msgbox "regr第" & reg_r & "块第" & line_r & "行:" & vbcrlf & linerf & vbcrlf & "regc第" & reg_C & "快第" & line_c & "行:" & vbcrlf & linecf filew.writeline linec(line_c) '找到匹配行,写入文件 mark = "line_have_mark" exit for end if next '#################第二层双循环结束## if mark = "line_no_mark" then filew.writeline linerf & "=""" & linerf & """" '未匹配行,处理后写文件 'filew.writeline liner(line_r) '未匹配行,直接写文件 'msgbox "未找到的行:" & linerf & "=""" & linerf & """" & vbcrlf end if next filew.writeline '区块间换行,空为写入一个空行 exit for end ifnext '##########第一层双循环结束##### if mmark = "reg_no_mark" then 'msgbox "r第" & reg_r & "块:" & liner(0) & vbcrlf & " c第" & reg_c & "块:" & linec(0) filew.writeline regr(reg_r) & vbcrlf '未匹配的区块,直接写文件 '####################未匹配的区块,处理后写文件 'filew.writeline liner(0) 'for line_rr = 1 to ubound(liner) 'linerff = Split(liner(line_rr) , "=")(0) 'filew.writeline linerff & "=""" & linerff & """" 'next 'filew.writeline '区块间换行,空为写入一个空行 '#################### end if next Filec.CloseFiler.CloseFilew.Close
结果:
转换很成功,不过转换后却懒得翻译了。。好在还有点东西,不算毫无收获吧。。下次想编辑ini文件,改改就能用了。
- 关于一个类ini文件的分析和转换的vbs实现
- 一个ini文件读写类的设计和实现
- 轻松实现一个操作ini文件的类
- 轻松实现一个操作ini文件的类
- 轻松实现一个操作ini文件的类
- 【转】轻松实现一个操作ini文件的类
- 轻松实现一个操作ini文件的类
- 轻松实现一个操作ini文件的类
- 轻松实现一个操作ini文件的类
- 轻松实现一个操作ini文件的类
- 轻松实现一个操作ini文件的类
- 轻松实现一个操作ini文件的类
- 轻松实现一个操作ini文件的类
- 轻松实现一个操作ini文件的类
- 17.18.实现一个读取INI文件的类
- 一个转换编码格式的VBS脚本
- 一个操作Ini文件的类
- 一个操作Ini文件的类
- MP算法和OMP算法及其思想
- linux脚本编程
- Once-Only Headers
- 新窗口打开超链接的技巧
- mysql中DATETIME、DATE和TIMESTAMP的区别
- 关于一个类ini文件的分析和转换的vbs实现
- 堆排序
- 快速搭建起基于Webwork与Hibernate的web应用
- 现实迷途 第十四章 事情突变
- 财富故事:赚2万还是赔8万
- C#开发-----坦克大战游戏
- 财富故事:赚2万还是赔8万 2
- android解析xml文件的方式
- 从头到尾理解KMP算法