Плохо знакомы с этим, поток управления не работает так, как я думаю, это должно

Поэтому я пытаюсь создать скрипт автоматизации, который поможет скопировать очень большую библиотеку CD в mp3 с помощью программы CDex. Проблема в том, что скрипт не остается открытым.

В прошлый раз, когда я пытался сделать сценарий, это было действительно плохо, но по крайней мере это сработало. Когда он работал, значок 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

1 ответ

Вы должны поместить свой код в цикл, чтобы он мог постоянно проверять состояние лотка, например, следующее обновление проверяет каждую полсекунду:

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

  Sleep,500 // Sleep for 500 milliseconds
}

...
Другие вопросы по тегам