当文件开始使用autohotkey存在时,如何对其进行操作?

当文件开始使用autohotkey存在时,如何对其进行操作?,autohotkey,Autohotkey,我有以下代码,据我所知应该可以工作。目标是不断检查是否存在Z:\auto\u run.txt。一旦存在,文件的每一行(作为文件的路径)都应该在记事本++中打开。最后,删除Z:\auto\u run.txt 最后一点是我必须独立工作。问题是如何持续检查文件的存在?当我在标准的Autohotkey.ahk中运行下面的代码时,它似乎不起作用,即使文件存在,也不会发生任何事情 IfExist, Z:\auto_run.txt { Loop, read, Z:\auto_run.txt {

我有以下代码,据我所知应该可以工作。目标是不断检查是否存在Z:\auto\u run.txt。一旦存在,文件的每一行(作为文件的路径)都应该在记事本++中打开。最后,删除Z:\auto\u run.txt

最后一点是我必须独立工作。问题是如何持续检查文件的存在?当我在标准的Autohotkey.ahk中运行下面的代码时,它似乎不起作用,即使文件存在,也不会发生任何事情

IfExist, Z:\auto_run.txt
{
    Loop, read, Z:\auto_run.txt
    {
        IfExist, Z:\%A_LoopReadLine%
            Run, C:\Program Files (x86)\Notepad++\notepad++.exe Z:\%A_LoopReadLine%
    }
    FileDelete, Z:\autohotkey\auto_run.txt
}

把整个事情放在一个循环里行吗

Loop
{
    IfExist, Z:\auto_run.txt
    {
        Loop, read, Z:\auto_run.txt
        {
            IfExist, Z:\%A_LoopReadLine%
                Run, C:\Program Files (x86)\Notepad++\notepad++.exe Z:\%A_LoopReadLine%
        }
        FileDelete, Z:\autohotkey\auto_run.txt
    }

    Sleep, 100 ; Short sleep
}
如果您不想将纸条锁定到循环中,也可以使用计时器

#Persistent

fullFilePath := "Path\To\File.txt"
SetTimer, CheckForFile, 500
return

CheckForFile:
    if (FileExist(fullFilePath)) {
        ; Do something with the file...
        Loop, Read, %fullFilePath%
        {
            MsgBox % A_LoopReadLine
        }

        ; Delete the file
        FileDelete, %fullFilePath%
    }
return

有趣的是,第一个解决方案在放入自己的文件时可以工作,而第二个解决方案则不行。我有点喜欢运行一个.ahk文件的优雅,其中包含了我所有的东西,所以我想让第二个解决方案开始工作。出于好奇,你自己测试过吗?编辑:还刚刚意识到第一个解决方案并非每次都有效!大约每3次中就有1次有效…@brollin我认为第二种解决方案缺少
#Persistent
。我现在已经用一个可以在我的机器上运行的版本对它进行了更新。只需确保在脚本的自动执行部分调用了
SetTimer
。在第一个
return
语句上方的含义。至于为什么它会偶尔失败,我不确定。如果这是问题的话,可能是您试图删除的文件被其他程序锁定了。很抱歉取消了答案。。。它仍然不起作用:'(我在第二个解决方案中加入了#Persistent并更改了其他细节,但没有任何效果):/我在顶部的其他内容是:#单实例强制#热键间隔100#MaxHotkeysPerInterval 20这些都可能是问题吗?@brollin不是真的。预期行为的哪一部分不起作用?另外,你是否尝试过将第二个脚本放到它自己的脚本中n文件?它可能是脚本中的其他内容,很难说没有看到它。