找回密码
 加入
搜索
查看: 3981|回复: 7

[AU3基础] [已解决]查找与替换的小程序,生成的大小与原文件不同![4楼正解!]

[复制链接]
发表于 2012-12-17 17:44:56 | 显示全部楼层 |阅读模式
本帖最后由 chishingchan 于 2012-12-17 19:41 编辑
$FN = ("File.dll")
$FS = "740717"
$RS = "909090"
$SR = StringReplace(StringToBinary(FileRead($FN)),$FS,$RS)
FileMove($FN,$FN&".BAK")
$KO = BinaryToString($SR)
FileWrite($FN,$KO)
如题,请问如何修正这个错误?谢谢!
发表于 2012-12-17 17:50:23 | 显示全部楼层
FileOpen("文件名", 16)
 楼主| 发表于 2012-12-17 19:08:53 | 显示全部楼层
回复 2# afan


改成 FileOpen("文件名",16) 也不行,比原文件小的更厉害!
发表于 2012-12-17 19:29:39 | 显示全部楼层
回复 3# chishingchan


    谁知道你怎么写的…
Local $FN = 'File.dll'
Local $FO = FileOpen($FN, 16)
Local $sBin = FileRead($FO)
FileClose($FO)

Local $sFS = '740717', $sRS = '909090'
Local $sSR = StringReplace($sBin, $sFS, $sRS)
If @extended = 0 Then Exit 1

FileMove($FN, $FN & '.BAK')
$FO = FileOpen($FN, 2 + 16)
FileWrite($FO, $sSR)
FileClose($FO)
 楼主| 发表于 2012-12-17 19:35:44 | 显示全部楼层
$FN = ("PPP.dll");541152 字节
$FS = "741F8BF1"
$RS = "90908BF1"
$FR = FileRead($FN)
$SB = StringToBinary($FR)
$SR = StringReplace($SB,$FS,$RS)
FileMove($FN,$FN&".BAK")
$KO = BinaryToString($SR)
MsgBox(0,"长度","$FR=" & StringLen($FR) & @CRLF  & "$SR=" & StringLen($SR) & @CRLF & "$KO=" & StringLen($KO))
FileWrite($FN,$KO)
 楼主| 发表于 2012-12-17 19:36:20 | 显示全部楼层
回复 5# chishingchan


我是这样写的。
 楼主| 发表于 2012-12-17 19:39:30 | 显示全部楼层
回复 4# afan
谢谢!你的代码可以了。
 楼主| 发表于 2014-10-10 12:15:36 | 显示全部楼层
总结一下:如有错误请指正,谢谢!
Func SRB($FileName,$SearchBin,$ReplaceBin)
        $FR = FileRead(FileOpen($FileName))
        $STB = StringToBinary($FR)
        FileClose($FileName)
        $SR = StringReplace($STB,$SearchBin,$ReplaceBin)
        $BTS = BinaryToString($SR)
        ;FileMove($FileName,$FileName&".BAK")
        FileOpen($FileName,2+16)
        FileWrite($FileName,$BTS)
        FileClose($FileName)
EndFunc
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 12:51 , Processed in 0.086228 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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