如何让Autohotkey'监听'更改文件?

时间:2015-06-01 20:25:23

标签: autohotkey

我有一个文本文件,我们称之为C:\to_run.txt。我希望我的Autohotkey脚本能够“监听”此文件,以便在检测到更改时立即根据文件内容执行操作,然后再次将文件设置为空白。

我可以处理最后的部分,所以我真的要求一种有效的方法来检测文件更改?我说效率很高,因为我的Autohotkey脚本变得相当长,我不希望这个监听功能以任何方式挂起脚本的其余部分。

2 个答案:

答案 0 :(得分:5)

查看WatchDirectory()

确保您正在运行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而不是整个文件内容。