E.3 Word Functions Header
优质
小牛编辑
124浏览
2023-12-01
E.3.1 介绍
包含头文件:
!include "WordFunc.nsh"
包含函数 "WordFind" 用于安装和 "WordReplace" 用于卸载:
!insertmacro WordFind !insertmacro un.WordReplace
调用函数:
Section Install ${WordFind} "A--H---S" "-" "+2" $R0 ; $R0="H" SectionEnd
Section un.Install ${un.WordReplace} "A--H---S" "-" "x" "+3*" $R0 ; $R0="A--HxS" SectionEnd
E.3.2 WordFind
- 多功能字符串函数
字符串: "[word+1][delimiter][word+2][delimiter][word+3]..." "[delimiter][word+1][delimiter][word+2][delimiter]..." "[delimiter][delimiter][word+1][delimiter][delimiter][delimiter]..." "...[word-3][delimiter][word-2][delimiter][word-1]" "...[delimiter][word-2][delimiter][word-1][delimiter]" "...[delimiter][delimiter][word-1][delimiter][delimiter][delimiter]"
语法:
${WordFind} "[string]" "[delimiter]" "[E][options]" $var
"[string]" ;[string] ; 输入字符串 "[delimiter]" ;[delimiter] ; 一个或多个符号 "[E][options]" ;[options] ; +number :从开始起的词语序号 ; -number :从结尾起的词语序号 ; +number} :分隔符序号,输出从开始起此分隔符之后的范围 ; +number{ :分隔符序号,输出从开始起此分隔符之前的范围 ; +number}} :词语序号,输出从开始起此词语之后的范围 ; +number{{ :词语序号,输出从开始起此词语之前的范围 ; +number{} :词语序号,输出从开始起此词语之前和之后的范围 (词语排除) ; +number*} :词语序号,带词语输出从开始起此词语之后的范围 ; +number{* :词语序号,带词语输出从开始起此词语之前的范围 ; # :输出词语总数量 ; * :输出分隔符总数量 ; /word :输出词语序号 ; ;[E] ; 带错误级别输出 ; IfErrors: ; $var=1 未找到分隔符 ; $var=2 没有该词语序号 ; $var=3 语法错误 (使用:+1、-1}、#、*、/word 等...) ;[] ; 无错误级别输出 (默认) ; 如果出现错误则 (结果=输入字符串) ; $var ;输出 (结果)
注意:
- 可接受数字 1、01、001...
示例 (通过符号查找词语):
Section ${WordFind} "C:\io.sys C:\Program Files C:\WINDOWS" " C:\" "-02" $R0 ; $R0="Program Files" SectionEnd
示例 (排除分隔符):
Section ${WordFind} "C:\io.sys C:\logo.sys C:\WINDOWS" "sys" "-2}" $R0 ; $R0=" C:\logo.sys C:\WINDOWS" SectionEnd
示例 (词语总数量):
Section ${WordFind} "C:\io.sys C:\logo.sys C:\WINDOWS" " C:\" "#" $R0 ; $R0="3" SectionEnd
示例 (分隔符总数量):
Section ${WordFind} "C:\io.sys C:\logo.sys C:\WINDOWS" "sys" "*" $R0 ; $R0="2" SectionEnd
示例 (查找词语序号):
Section ${WordFind} "C:\io.sys C:\Program Files C:\WINDOWS" " " "/Files" $R0 ; $R0="3" SectionEnd
示例 ( }} ):
Section ${WordFind} "C:\io.sys C:\logo.sys C:\WINDOWS" " " "+2}}" $R0 ; $R0=" C:\WINDOWS" SectionEnd
示例 ( {} ):
Section ${WordFind} "C:\io.sys C:\logo.sys C:\WINDOWS" " " "+2{}" $R0 ; $R0="C:\io.sys C:\WINDOWS" SectionEnd
示例 ( *} ):
Section ${WordFind} "C:\io.sys C:\logo.sys C:\WINDOWS" " " "+2*}" $R0 ; $R0="C:\logo.sys C:\WINDOWS" SectionEnd
示例 (获取父路径):
Section StrCpy $R0 "C:\Program Files\NSIS\NSIS.chm" ; "C:\Program Files\NSIS\Include\" ; "C:\\Program Files\\NSIS\\NSIS.chm" ${WordFind} "$R0" "\" "-2{*" $R0 ; $R0="C:\Program Files\NSIS" ; "C:\\Program Files\\NSIS" SectionEnd
示例 (坐标):
Section ${WordFind} "C:\io.sys C:\logo.sys C:\WINDOWS" ":\lo" "E+1{" $R0 ; $R0="C:\io.sys C" IfErrors end StrLen $0 $R0 ; $0 = 词语开始位置 (11) StrLen $1 ':\lo' ; $1 = 词语长度 (4) ; StrCpy $R0 $R1 $1 $0 ; $R0 = :\lo end: SectionEnd
示例 (带错误级别输出):
Section ${WordFind} "[string]" "[delimiter]" "E[options]" $R0 IfErrors 0 end StrCmp $R0 1 0 +2 ; 错误级别 1? MessageBox MB_OK '未找到分隔符!' IDOK end StrCmp $R0 2 0 +2 ; 错误级别 2? MessageBox MB_OK '没有该词语序号!' IDOK end StrCmp $R0 3 0 +2 ; 错误级别 3? MessageBox MB_OK '语法错误!' end: SectionEnd
示例 (不带错误级别输出):
Section ${WordFind} "C:\io.sys C:\logo.sys" "_" "+1" $R0 ; $R0="C:\io.sys C:\logo.sys" (error: delimiter "_" not found) SectionEnd
示例 (如果找到):
Section ${WordFind} "C:\io.sys C:\logo.sys" ":\lo" "E+1{" $R0 IfErrors notfound found found: MessageBox MB_OK '找到!' IDOK end notfound: MessageBox MB_OK '未找到!' end: SectionEnd
示例 (如果找到 2):
Section ${WordFind} "C:\io.sys C:\logo.sys" ":\lo" "+1{" $R0 StrCmp $R0 "C:\io.sys C:\logo.sys" notfound found ; error? found: MessageBox MB_OK '找到!' IDOK end notfound: MessageBox MB_OK '未找到!' end: SectionEnd
示例 (如果未找到分隔符则接受字符串中的一个词语):
Section StrCpy $0 'OneWord' StrCpy $1 1 loop: ${WordFind} "$0" " " "E+$1" $R0 IfErrors 0 code StrCmp $1$R0 11 0 error StrCpy $R0 $0 goto end code: ; ... IntOp $1 $1 + 1 goto loop error: StrCpy $1 '' StrCpy $R0 '' end: ; $R0="OneWord" SectionEnd
E.3.3 WordFindS
- 同 WordFind,但是区分大小写。
E.3.4 WordFind2X
- 查找位于两个分隔符之间的词语。
字符串: "[delimiter1][word+1][delimiter2][delimiter1][word+2][delimiter2]..." "[text][delimiter1][text][delimiter1][word+1][delimiter2][text]..." "...[delimiter1][word-2][delimiter2][delimiter1][word-1][delimiter2]" "...[text][delimiter1][text][delimiter1][word-1][delimiter2][text]"
语法:
${WordFind2X} "[string]" "[delimiter1]" "[delimiter2]" "[E][options]" $var
"[string]" ;[string] ; 输入字符串 "[delimiter1]" ;[delimiter1] ; 第一个分隔符 "[delimiter2]" ;[delimiter2] ; 第二个分隔符 "[E][options]" ;[options] ; +number :从开始起的词语序号 ; -number :从结尾起的词语序号 ; +number}} :词语序号,输出从开始起此词语之后的范围 ; +number{{ :词语序号,输出从开始起此词语之前的范围 ; +number{} :词语序号,输出从开始起此词语之前和之后的范围 (词语排除) ; +number*} :词语序号,带词语输出从开始起此词语之后的范围 ; +number{* :词语序号,带词语输出从开始起此词语之前的范围 ; # :输出词语总数量 ; /word :输出词语序号 ; ;[E] ; 带错误级别输出 ; IfErrors: ; $var=1 未找到词语 ; $var=2 没有该词语序号 ; $var=3 语法错误 (使用:+1、-1、#) ;[] ; 无错误级别输出 (默认) ; 如果出现错误则 (结果=输入字符串) ; $var ;输出 (结果)
示例 (1):
Section ${WordFind2X} "[C:\io.sys];[C:\logo.sys];[C:\WINDOWS]" "[C:\" "];" "+2" $R0 ; $R0="logo.sys" SectionEnd
示例 (2):
Section ${WordFind2X} "C:\WINDOWS C:\io.sys C:\logo.sys" "\" "." "-1" $R0 ; $R0="logo" SectionEnd
示例 (3):
Section ${WordFind2X} "C:\WINDOWS C:\io.sys C:\logo.sys" "\" "." "-1{{" $R0 ; $R0="C:\WINDOWS C:\io.sys C:" SectionEnd
示例 (4):
Section ${WordFind2X} "C:\WINDOWS C:\io.sys C:\logo.sys" "\" "." "-1{}" $R0 ; $R0="C:\WINDOWS C:\io.sys C:sys" SectionEnd
示例 (5):
Section ${WordFind2X} "C:\WINDOWS C:\io.sys C:\logo.sys" "\" "." "-1{*" $R0 ; $R0="C:\WINDOWS C:\io.sys C:\logo." SectionEnd
示例 (6):
Section ${WordFind2X} "C:\WINDOWS C:\io.sys C:\logo.sys" "\" "." "/logo" $R0 ; $R0="2" SectionEnd
示例 (带错误级别输出):
Section ${WordFind2X} "[io.sys];[C:\logo.sys]" "\" "];" "E+1" $R0 ; $R0="1" ("\...];" 未找到) IfErrors 0 noerrors MessageBox MB_OK '错误级别=$R0' IDOK end noerrors: MessageBox MB_OK '没有错误!' end: SectionEnd
E.3.5 WordFind2XS
- 同 WordFind2X,但是区分大小写。
E.3.6 WordFind3X
- 查找位于两个分隔符之间包含一个字符串的词语
语法:
${WordFind3X} "[string]" "[delimiter1]" "[center]" "[delimiter2]" "[E][options]" $var
"[string]" ;[string] ; 输入字符串 "[delimiter1]" ;[delimiter1] ; 第一个字符串 "[center]" ;[center] ; 中间字符串 "[delimiter2]" ;[delimiter2] ; 第二个字符串 "[E][options]" ;[options] ; +number :从开始起的词语序号 ; -number :从结尾起的词语序号 ; +number}} :词语序号,输出从开始起此词语之后的范围 ; +number{{ :词语序号,输出从开始起此词语之前的范围 ; +number{} :词语序号,输出从开始起此词语之前和之后的范围 (词语排除) ; +number*} :词语序号,带词语输出从开始起此词语之后的范围 ; +number{* :词语序号,带词语输出从开始起此词语之前的范围 ; # :输出词语总数量 ; /word :输出词语序号 ; ;[E] ; 带错误级别输出 ; IfErrors: ; $var=1 未找到词语 ; $var=2 没有该词语序号 ; $var=3 语法错误 (使用:+1、-1、#) ;[] ; 无错误级别输出 (默认) ; 如果出现错误则 (结果=输入字符串) ; $var ;输出 (结果)
示例 (1):
Section ${WordFind3X} "[1.AAB];[2.BAA];[3.BBB];" "[" "AA" "];" "+1" $R0 ; $R0="1.AAB" SectionEnd
示例 (2):
Section ${WordFind3X} "[1.AAB];[2.BAA];[3.BBB];" "[" "AA" "];" "-1" $R0 ; $R0="2.BAA" SectionEnd
示例 (3):
Section ${WordFind3X} "[1.AAB];[2.BAA];[3.BBB];" "[" "AA" "];" "-1{{" $R0 ; $R0="[1.AAB];" SectionEnd
示例 (4):
Section ${WordFind3X} "[1.AAB];[2.BAA];[3.BBB];" "[" "AA" "];" "-1{}" $R0 ; $R0="[1.AAB];[3.BBB];" SectionEnd
示例 (5):
Section ${WordFind3X} "[1.AAB];[2.BAA];[3.BBB];" "[" "AA" "];" "-1{*" $R0 ; $R0="[1.AAB];[2.BAA];" SectionEnd
示例 (6):
Section ${WordFind3X} "[1.AAB];[2.BAA];[3.BBB];" "[" "AA" "];" "/2.BAA" $R0 ; $R0="2" SectionEnd
示例 (带错误级别输出):
Section ${WordFind3X} "[1.AAB];[2.BAA];[3.BBB];" "[" "XX" "];" "E+1" $R0 ; $R0="1" ("[...XX...];" not found) IfErrors 0 noerrors MessageBox MB_OK '错误级别=$R0' IDOK end noerrors: MessageBox MB_OK '没有错误!' end: SectionEnd
E.3.7 WordFind3XS
- 同 WordFind3X,但是区分大小写。
E.3.8 WordReplace
- 从字符串中替换或删除词语
语法:
${WordReplace} "[string]" "[word1]" "[word2]" "[E][options]" $var
"[string]" ;[string] ; 输入字符串 "[word1]" ;[word1] ; 要删除或替换的词语 "[word2]" ;[word2] ; 被替换的字符串 (如果为空则删除) "[E][options]" ;[options] ; +number :从开始起的词语序号 ; -number :从结尾起的词语序号 ; +number* :从开始起的词语序号,多次替换 ; -number* :从结尾起的词语序号,多次替换 ; + :替换或删除所有找到的字符串 ; +* :多次替换所有找到的字符串 ; {} :如果存在则从两端替换或删除所有分隔符 (无错误级别输出) ; {}* :如果存在则从两端多次替换所有分隔符 (无错误级别输出) ; ;[E] ; 带错误级别输出 ; IfErrors: ; $var=1 没有找到要删除或替换的词语 ; $var=2 没有该词语序号 ; $var=3 语法错误 (使用:+1、-1、+1*、-1*、+、+*、{}、{}*) ;[] ; 无错误级别输出 (默认) ; 如果出现错误则 (结果=输入字符串) ; $var ;输出 (结果)
示例 (替换):
Section ${WordReplace} "C:\io.sys C:\logo.sys C:\WINDOWS" "SYS" "bmp" "+2" $R0 ; $R0="C:\io.sys C:\logo.bmp C:\WINDOWS" SectionEnd
示例 (删除):
Section ${WordReplace} "C:\io.sys C:\logo.sys C:\WINDOWS" "SYS" "" "+" $R0 ; $R0="C:\io. C:\logo. C:\WINDOWS" SectionEnd
示例 (多次替换 1):
Section ${WordReplace} "C:\io.sys C:\logo.sys C:\WINDOWS" " " " " "+1*" $R0 ; +1* 或 +2* 或 +3* 或 +4* 或 +5* 或 +6* ; $R0="C:\io.sys C:\logo.sys C:\WINDOWS" SectionEnd
示例 (多次替换 2):
Section ${WordReplace} "C:\io.sys C:\logo.sysSYSsys C:\WINDOWS" "sys" "bmp" "+*" $R0 ; $R0="C:\io.bmp C:\logo.bmp C:\WINDOWS" SectionEnd
示例 (多次替换 3):
Section ${WordReplace} "sysSYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys" "sys" "|" "{}*" $R0 ; $R0="|C:\io.sys C:\logo.sys C:\WINDOWS|" SectionEnd
示例 (带错误级别输出):
Section ${WordReplace} "C:\io.sys C:\logo.sys" "sys" "bmp" "E+3" $R0 ; $R0="2" (没有该词语序号 "+3") IfErrors 0 noerrors MessageBox MB_OK '错误级别=$R0' IDOK end noerrors: MessageBox MB_OK '没有错误!' end: SectionEnd
E.3.9 WordReplaceS
- 同 WordReplace,但是区分大小写。
E.3.10 WordAdd
- 从字符串 2 添加词语 (如果不存在) 到字符串 1,或删除词语 (如果存在)
语法:
${WordAdd} "[string1]" "[delimiter]" "[E][options]" $var
"[string1]" ;[string1] ; 用于添加或删除的字符串 "[delimiter]" ;[delimiter] ; 一个或多个符号 "[E][options]" ;[options] ; +string2 :添加的词语 ; -string2 :删除的词语 ; ;[E] ; 带错误级别输出 ; IfErrors: ; $var=1 分隔符为空 ; $var=3 语法错误 (使用:+text、-text) ;[] ; 无错误级别输出 (默认) ; 如果出现错误则 (结果=输入字符串) ; $var ;输出 (结果)
示例 (添加):
Section ${WordAdd} "C:\io.sys C:\WINDOWS" " " "+C:\WINDOWS C:\config.sys" $R0 ; $R0="C:\io.sys C:\WINDOWS C:\config.sys" SectionEnd
示例 (删除):
Section ${WordAdd} "C:\io.sys C:\logo.sys C:\WINDOWS" " " "-C:\WINDOWS C:\config.sys C:\IO.SYS" $R0 ; $R0="C:\logo.sys" SectionEnd
示例 (添加到一个):
Section ${WordAdd} "C:\io.sys" " " "+C:\WINDOWS C:\config.sys C:\IO.SYS" $R0 ; $R0="C:\io.sys C:\WINDOWS C:\config.sys" SectionEnd
示例 (删除一个):
Section ${WordAdd} "C:\io.sys C:\logo.sys C:\WINDOWS" " " "-C:\WINDOWS" $R0 ; $R0="C:\io.sys C:\logo.sys" SectionEnd
示例 (没有找到新词语):
Section ${WordAdd} "C:\io.sys C:\logo.sys" " " "+C:\logo.sys" $R0 StrCmp $R0 "C:\io.sys C:\logo.sys" 0 +2 MessageBox MB_OK "没有找到要添加的新词语!" SectionEnd
示例 (没有删除词语):
Section ${WordAdd} "C:\io.sys C:\logo.sys" " " "-C:\config.sys" $R0 StrCmp $R0 "C:\io.sys C:\logo.sys" 0 +2 MessageBox MB_OK "没有找到要删除的词语!" SectionEnd
示例 (带错误级别输出):
Section ${WordAdd} "C:\io.sys C:\logo.sys" "" "E-C:\logo.sys" $R0 ; $R0="1" (分隔符为空 "") IfErrors 0 noerrors MessageBox MB_OK '错误级别=$R0' IDOK end noerrors: MessageBox MB_OK '没有错误!' end: SectionEnd
E.3.11 WordAddS
- 同 WordAdd,但是区分大小写。
E.3.12 WordInsert
- 在字符串中插入词语
语法:
${WordInsert} "[string]" "[delimiter]" "[word]" "[E][options]" $var
"[string]" ;[string] ; 输入字符串 "[delimiter]" ;[delimiter] ; 一个或多个符号 "[word]" ;[word] ; 要插入的词语 "[E][options]" ;[options] ; +number :从开始起的词语序号 ; -number :从结尾起的词语序号 ; ;[E] ; 带错误级别输出 ; IfErrors: ; $var=1 分隔符为空 ; $var=2 错误的词语序号 ; $var=3 语法错误 (使用:+1、-1) ;[] ; 无错误级别输出 (默认) ; 如果出现错误则 (结果=输入字符串) ; $var ;输出 (结果)
示例 (1):
Section ${WordInsert} "C:\io.sys C:\WINDOWS" " " "C:\logo.sys" "-2" $R0 ; $R0="C:\io.sys C:\logo.sys C:\WINDOWS" SectionEnd
示例 (2):
Section ${WordInsert} "C:\io.sys" " " "C:\WINDOWS" "+2" $R0 ; $R0="C:\io.sys C:\WINDOWS" SectionEnd
示例 (3):
Section ${WordInsert} "" " " "C:\WINDOWS" "+1" $R0 ; $R0="C:\WINDOWS " SectionEnd
示例 (带错误级别输出):
Section ${WordInsert} "C:\io.sys C:\logo.sys" " " "C:\logo.sys" "E+4" $R0 ; $R0="2" (错误的词语序号 "+4") IfErrors 0 noerrors MessageBox MB_OK '错误级别=$R0' IDOK end noerrors: MessageBox MB_OK '没有错误!' end: SectionEnd
E.3.13 WordInsertS
- 同 WordInsert,但是区分大小写。
E.3.14 StrFilter
- 转换字符串为大写或小写
- 设置符号过滤
语法:
${StrFilter} "[string]" "[options]" "[symbols1]" "[symbols2]" $var
"[string]" ;[string] ; 输入字符串 ; "[options]" ;[+|-][1|2|3|12|23|31][eng|rus] ; + :将字符串转为大写 ; - :将字符串转为小写 ; 1 :仅数字 ; 2 :仅字母 ; 3 :仅特殊字符 ; 12 :仅数字 + 字母 ; 23 :仅字母 + 特殊字符 ; 31 :仅特殊字符 + 数字 ; eng :英语符号 (默认) ; rus :俄语符号 ; "[symbols1]" ;[symbols1] ; 包含符号 (不改变) ; "[symbols2]" ;[symbols2] ; 排除符号 ; $var ;输出 (结果)
注意:
- 语法错误时的错误标志
- 包含和排除同样的符号 = 排除符号
示例 (大写):
Section ${StrFilter} "123abc 456DEF 7890|%#" "+" "" "" $R0 ; $R0="123ABC 456DEF 7890|%#" SectionEnd
示例 (小写):
Section ${StrFilter} "123abc 456DEF 7890|%#" "-" "ef" "" $R0 ; $R0="123abc 456dEF 7890|%#" SectionEnd
示例 (过滤1):
Section ${StrFilter} "123abc 456DEF 7890|%#" "2" "|%" "" $R0 ; $R0="abcDEF|%" ;仅字母 + |% SectionEnd
示例 (过滤2):
Section ${StrFilter} "123abc 456DEF 7890|%#" "13" "af" "4590" $R0 ; $R0="123a 6F 78|%#" ;仅数字+ 特殊字符 + af - 4590 SectionEnd
示例 (过滤3):
Section ${StrFilter} "123abc 456DEF 7890|%#" "+12" "b" "def" $R0 ; $R0="123AbC4567890" ;仅数字 + 字母 + b - def SectionEnd
示例 (过滤4):
Section ${StrFilter} "123abcÀÁÂ 456DEFãäå 7890|%#" "+12rus" "ä" "ãå" $R0 ; $R0="123ÀÁÂ456ä7890" ;仅数字 + 字母 + ä - ãå SectionEnd
示例 (英语+俄语字母):
Section ${StrFilter} "123abcÀÁÂ 456DEFãäå 7890|%#" "2rus" "" "" $R0 ; $R0="ÀÁÂãäå" ;仅俄语字母 ${StrFilter} "123abcÀÁÂ 456DEFãäå 7890|%#" "2" "$R0" "" $R0 ; $R0="abcÀÁÂDEFãäå" ;仅英语字母 + 俄语字母 SectionEnd
示例 (词首大写):
Section Push "_01-PERPETUOUS_DREAMER__-__THE_SOUND_OF_GOODBYE_(ORIG._MIX).MP3_" Call Capitalize Pop $R0 ; $R0="_01-Perpetuous_Dreamer__-__The_Sound_Of_Goodbye_(Orig._Mix).mp3_" ${WordReplace} "$R0" "_" " " "+*" $R0 ; $R0=" 01-Perpetuous Dreamer - The Sound Of Goodbye (Orig. Mix).mp3 " ${WordReplace} "$R0" " " "" "{}" $R0 ; $R0="01-Perpetuous Dreamer - The Sound Of Goodbye (Orig. Mix).mp3" SectionEnd Function Capitalize Exch $R0 Push $0 Push $1 Push $2 ${StrFilter} '$R0' '-eng' '' '' $R0 ${StrFilter} '$R0' '-rus' '' '' $R0 StrCpy $0 0 loop: IntOp $0 $0 + 1 StrCpy $1 $R0 1 $0 StrCmp $1 '' end StrCmp $1 ' ' +5 StrCmp $1 '_' +4 StrCmp $1 '-' +3 StrCmp $1 '(' +2 StrCmp $1 '[' 0 loop IntOp $0 $0 + 1 StrCpy $1 $R0 1 $0 StrCmp $1 '' end ${StrFilter} '$1' '+eng' '' '' $1 ${StrFilter} '$1' '+rus' '' '' $1 StrCpy $2 $R0 $0 IntOp $0 $0 + 1 StrCpy $R0 $R0 '' $0 IntOp $0 $0 - 2 StrCpy $R0 '$2$1$R0' goto loop end: Pop $2 Pop $1 Pop $0 Exch $R0 FunctionEnd
E.3.15 StrFilterS
- 同 StrFilter,但是区分大小写。
E.3.16 VersionCompare
- 比较版本号
语法:
${VersionCompare} "[Version1]" "[Version2]" $var
"[Version1]" ; 第一个版本 "[Version2]" ; 第二个版本 $var ; 结果: ; $var=0 版本相同 ; $var=1 版本 1 较高 ; $var=2 版本 2 较高
示例:
Section ${VersionCompare} "1.1.1.9" "1.1.1.01" $R0 ; $R0="1" SectionEnd
E.3.10 VersionConvert
- 将版本转换为可用于比较的十进制数
语法:
${VersionConvert} "[Version]" "[CharList]" $var
"[Version]" ; 版本 ; "[CharList]" ; 将被数字替换的字符列表 ; "abcdefghijklmnopqrstuvwxyz" (默认) ; $var ; 结果:转换后的版本
注意:
- 转换后的字母使用点分开
- 如果字符为非数字或者不在列表中,则它会被转换为点
示例1:
Section ${VersionConvert} "9.0a" "" $R0 ; $R0="9.0.01" ${VersionConvert} "9.0c" "" $R1 ; $R1="9.0.03" ${VersionCompare} "$R0" "$R1" $R2 ; $R2="2" 版本 2 较高 SectionEnd
示例2:
Section ${VersionConvert} "0.15c-9m" "" $R0 ; $R0="0.15.03.9.13" ${VersionConvert} "0.15c-1n" "" $R1 ; $R1="0.15.03.1.14" ${VersionCompare} "$R0" "$R1" $R2 ; $R2="1" 版本 1 较高 SectionEnd
示例3:
Section ${VersionConvert} "0.15c+" "abcdefghijklmnopqrstuvwxyz+" $R0 ; $R0="0.15.0327" ${VersionConvert} "0.15c" "abcdefghijklmnopqrstuvwxyz+" $R1 ; $R1="0.15.03" ${VersionCompare} "$R0" "$R1" $R2 ; $R2="1" 版本 1 较高 SectionEnd