Autohotkey 自动热键检查文件校验和

Autohotkey 自动热键检查文件校验和,autohotkey,checksum,Autohotkey,Checksum,我需要一个AHK脚本,它将检查/比较指定文件的MD5校验和值 大概是这样的: “文件”%userprofile%\appsettings\app.ini“是否具有MD5校验和值A465564D65454E5646256F 如果有的话 Msgbox“未更改” 如果没有 filedelete,“%userprofile%\appsettings\app.ini” 然后: filecopy、“%userprofile%\appsettings\app.kackup”、“%userprofile

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

大概是这样的:


“文件”
%userprofile%\appsettings\app.ini
“是否具有MD5校验和值
A465564D65454E5646256F

  • 如果有的话
    Msgbox“未更改”

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

    • 然后:
      filecopy、“%userprofile%\appsettings\app.kackup”、“%userprofile%\appsettings\app.ini”
退出脚本


我需要这是手动运行-按需,而不是一个持久的脚本

我更喜欢自动热键脚本,但如果太复杂,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哈希部分的完整说明。总之:

我们可以使用Windows CertUtil工具查找MD5哈希和 通过将输出分成不同的行(MD5和)来解析输出 本身将位于第二行)

脚本的其余部分只是一些逻辑,用于检查散列是否与给定的散列相同(
a465564d65454e564625456f
),如果不相同,则将
.backup
1备份到
.ini
文件中。请注意,如果允许覆盖文件,则不需要显式调用



1-我想你可能指的是
.backup
文件而不是
.kackup
文件,但我可能错了。如果您想要一个
.kackup
文件,请在脚本中将
app.backup
替换为
app.kackup

您是否介意告诉我们您打算将其用于什么用途?这是针对一个定制的错误应用程序,它有时会将其配置文件弄乱,导致应用程序在下次运行时无法正常运行。所以我想要一个脚本,它将检查配置文件是否完整,如果不完整,它将替换损坏的文件。出于性能原因,我不想每次启动应用程序时都替换该文件(良好的配置文件可以解决问题,但应用程序会重置为默认设置)。应用程序开发人员离开了项目,目前没有人愿意修复它)。非常感谢!我是说非常感谢!这正是我需要的!它像魅力一样工作!!!(是的,“.kackup”是一个打字错误,应该是“.backup”。