微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Autohotkey 检查文件校验和

如何解决Autohotkey 检查文件校验和

我需要一个 AHK 脚本来检查/比较指定文件的 MD5 校验和值。

像这样:


'文件%userprofile%\appsettings\app.ini”是否有 MD5 校验和值 A465564D654E56464025456F

  • 如果是 MsgBox "not changed"

  • 如果没有 filedelete,"%userprofile%\appsettings\app.ini"

    • 那么: filecopy,"%userprofile%\appsettings\app.kackup","%userprofile%\appsettings\app.ini"

退出脚本


我需要手动运行 - 按需运行,而不是持久化脚本。

我更喜欢它是一个 Autohotkey 脚本,但如果它太复杂,powershell 或批处理脚本也可以。

谢谢

解决方法

一种解决方案:

var:= ComObjCreate("WScript.Shell").Exec("cmd.exe /q /c CertUtil -hashfile %userprofile%/appsettings/app.ini MD5").StdOut.ReadAll()
outputArr := (StrSplit(var,"`r`n"))
out:=outputArr[2]
;MsgBox %out%

if(out=="A465564D654E56464025456F"){
    Msgbox not changed
    ExitApp
}
else{
    MsgBox Different MD5- restoring...
    filecopy,%userprofile%\appsettings\app.backup,%userprofile%\appsettings\app.ini,1
    ExitApp
}

查看 MD5 散列部分 here 的完整说明。总结:

我们可以使用 Windows CertUtil 工具找到 MD5 哈希和并 通过 StrSpling 将输出解析为不同的行(MD5 sum 本身将在第二行)。

脚本的其余部分只是一些逻辑,用于检查哈希值是否与给定的哈希值 (A465564D654E56464025456F) 相同,如果不同,则 filecopy .backup1.ini 文件。请注意,如果我们赋予 filedelete 覆盖文件的能力,我们不需要显式调用 filecopy


1- 我认为您的意思可能是 .backup 文件而不是 .kackup 文件,但我可能错了。如果您需要 .kackup 文件,请将脚本中的 app.backup 替换为 app.kackup

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。