-1

所以我正在尝试制作一个自动化脚本来帮助使用一个名为 CDex 的程序将一个非常大的 CD 库翻录为 mp3。问题是脚本没有保持打开状态。

上次我尝试编写脚本时确实很糟糕,但至少它奏效了。当它运行时,AHK 图标在系统托盘中,但这个脚本似乎什么都不做,并且在进程下的任务管理器中没有任何内容。

我相当确定我的问题在于控制流程和我对“返回”的使用。我认为当您使用它时,它会从顶部重新启动脚本?

这是我的代码,请帮助我找出我出错的地方。

ifwinexist, copying
{
    return
}
else
{
    Gosub chktry
    return
}

chktry:
driveget, traystatus, statuscd
ifequal, traystatus, open
{
    return
}
else
{
    Gosub matchchk
    return
}

matchchk:
ifwinexist, no match found
{
    Gosub nomatch
    return
}
else
{
    Gosub inxmatch
    return
}

nomatch:
sendinput {Tab}{Tab}{Tab}{Tab}{Enter}{f9}
Gosub renameunknownloop
    return

inxmatch:
ifwinexist, inexact match found
{
    sendinput {tab}{tab}{enter}
    Gosub inicopy
    return
}
else
{
    Gosub inicopy
    return
}

inicopy:
sendinput {f9}
ifwinexist, overwrite
{
    sendinput {tab}{enter}
    return
}
else
{
    Gosub midoverproa
    return
}

midoverproa:
ifwinexist, copying
{
    Gosub midoverprob
    return
}
else
{
    return
}

midoverprob:
ifwinexist, overwrite
{
    sendinput {tab}{enter}
    return
}
else
{
    Gosub midoverproa
    return
}

renameunknownloop:
ifwinexist, copying
{
    Gosub renameunknownloop
    return
}
else
{
    formattime, localtime,, MM/dd/yyyy-h.mm.tt
    filemovedir, S:\Dad's music\no name, S:\Dad's music\%localtime%, r
    return
}

return
4

1 回答 1

0

您需要将代码放入一个循环中,以便它可以继续检查托盘状态,例如以下更新每半秒检查一次:

while 1
{
  ifwinexist, copying
  {
      return
  }
  else
  {
      Gosub chktry
      return
  }

  Sleep,500 // Sleep for 500 milliseconds
}

...
于 2013-01-21T13:15:21.873 回答