Autohotkey 如何使用自动热键';听一听';要更改文件吗?
我有一个文本文件,我们叫它Autohotkey 如何使用自动热键';听一听';要更改文件吗?,autohotkey,Autohotkey,我有一个文本文件,我们叫它C:\to\u run.txt。我希望我的自动热键脚本“侦听”此文件,以便在检测到更改时,立即根据文件内容执行操作,然后再次将文件变为空白 我可以处理最后的部分,所以我真的在寻求一种有效的方法来检测文件更改吗?我之所以说高效,是因为我的自动热键脚本越来越长,我不希望此侦听功能以任何方式挂断脚本的其余部分。签出 只需确保你正在运行 要启动并运行它,首先下载这三个脚本并将它们保存到您的应用程序中 在这之后,只需指向您想要查看的任何地方,提供回调函数,如果您愿意,还
C:\to\u run.txt
。我希望我的自动热键脚本“侦听”此文件,以便在检测到更改时,立即根据文件内容执行操作,然后再次将文件变为空白
我可以处理最后的部分,所以我真的在寻求一种有效的方法来检测文件更改吗?我之所以说高效,是因为我的自动热键脚本越来越长,我不希望此侦听功能以任何方式挂断脚本的其余部分。签出
只需确保你正在运行
要启动并运行它,首先下载这三个脚本并将它们保存到您的应用程序中
#Persistent
WatchDirectory(A_ScriptDir "\|.ahk\", "Callback", 0x10)
return
Callback(param1, param2) {
msgBox % param1 "`n" param2
}
但是请注意,每当文件发生更改时,它将触发两次。据我所知,这似乎是Windows的行为。假设我们实际上只讨论一个要检查的文件: 当然没有西多拉的答案那么漂亮,但不需要外部图书馆:
#persistent
lastFileContent := ""
setTimer, checkFile, 20
return
checkFile:
fileread newFileContent, changingDocument.txt
if(newFileContent != lastFileContent) {
lastFileContent := newFileContent
msgbox, content changed to: %newFileContent%
}
return
在这种情况下,为了检查更大的文件,最好比较s而不是整个文件内容
注意:我没有测试这方面的性能影响。这个脚本每秒打开文件50次,可能相当消耗硬盘。我也喜欢这个答案。谢谢我正在检查一个较小的文件,所以这是适用的。哈哈-或者你可以更改设置计时器中的间隔时间,改为每分钟一次,或者,实际上,只需检查文件上的时间戳是否更改(节省磨损)。请注意,
WatchDirectory()
有一个更新的重新实现,称为(或在GitHub上)——它可能更易于使用,因为它具有较少的依赖项,并且还提供了一个非常有用的示例。