0

我使用 nsis 创建了 exe。我使用以下代码来比较两个文件。

Function compare 
   IfFileExists "$INSTDIR\old.properties" 0 filenotfound
    FileOpen $0 "$INSTDIR\old.properties" "r"
    FileOpen $1 "$INSTDIR\new.properties" "w"                     
    loop:
        FileRead $0 $2        
        MessageBox MB_OK "old $2" 
        FileRead $1 $3
        MessageBox MB_OK "new $3"                
        IfErrors done                          
        strcmp $3 $2 loop here
        here:                                  
           FileWrite $1 $2                     
           Goto loop
    done:
        FileClose $0                                    
        FileClose $1

     filenotfound:
     MessageBox MB_OK "File not found"
FunctionEnd

读取旧属性的第一个文本比较新属性的第一个文本如果匹配转到两个文件的下一个单词。否则旧属性值应在新属性文件中替换。但如果字符串不匹配替换新属性文件中的字符串不发生。如何解决这个问题?我做错了什么?

4

1 回答 1

0

FileOpen $1 "$INSTDIR\new.properties" "w"将擦除 new.properties 中的所有内容,"a"如果您想保留其内容,请使用。

我并不完全理解您要做什么,因为“比较文件”通常意味着只读操作,您也在编写,但您似乎并没有真正用新的不同行替换特定的旧行.. .

于 2013-03-27T16:40:57.013 回答