我有一个文本文件,我们称之为C:\to_run.txt
。我希望我的Autohotkey脚本能够“监听”此文件,以便在检测到更改时立即根据文件内容执行操作,然后再次将文件设置为空白。
我可以处理最后的部分,所以我真的要求一种有效的方法来检测文件更改?我说效率很高,因为我的Autohotkey脚本变得相当长,我不希望这个监听功能以任何方式挂起脚本的其余部分。
答案 0 :(得分:5)
确保您正在运行latest version of AHK。
要启动并运行,请先下载这三个脚本并将其保存到/lib folder。
之后,只需指向您想要查看的位置,提供回调函数,如果需要,可以使用第三个参数来监视特定的更改。有关完整文档,请参阅this forum post。
如果将此脚本放在自己的文件夹中,保存并运行它,然后再次保存,它应检测对该脚本文件的更改。
#Persistent
WatchDirectory(A_ScriptDir "\|.ahk\", "Callback", 0x10)
return
Callback(param1, param2) {
msgBox % param1 "`n" param2
}
但请注意,每次更改文件时都会触发两次。这似乎是我可以收集的Windows行为。
答案 1 :(得分:3)
假设我们真的只讨论一个要检查的文件: 肯定不如Sidola的答案那么漂亮,但不需要外部库:
#persistent
lastFileContent := ""
setTimer, checkFile, 20
return
checkFile:
fileread newFileContent, changingDocument.txt
if(newFileContent != lastFileContent) {
lastFileContent := newFileContent
msgbox, content changed to: %newFileContent%
}
return
在这种情况下,要检查较大的文件,最好比较MD5-checksum而不是整个文件内容。