如何解决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
.backup
1 到 .ini
文件。请注意,如果我们赋予 filedelete
覆盖文件的能力,我们不需要显式调用 filecopy
。
1- 我认为您的意思可能是 .backup
文件而不是 .kackup
文件,但我可能错了。如果您需要 .kackup
文件,请将脚本中的 app.backup
替换为 app.kackup
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。