使用 AutoHotKey 使用 while 循环迭代文件树
Iterating a file tree with a while loop with AutoHotKey
刚开始使用 AutoHotKey 进行自动化,对我的脚本中的循环有疑问。
我想做的是遍历应用程序中的文件树,按下直到到达所需的文件夹,然后 selecting 它。即使达到所需的值,我的 while 循环也不会停止。
我所做的是发送 ctrl-c 来复制树中第一个文件夹的值,将其存储在一个变量中,然后使用 while 循环将其与我要查找的内容进行比较。如果匹配,那么我 select 那个目录。
; parse file tree
Send, {Down 7}
Send, {Right}
Send, {Down}
Send, ^c
ClipWait
esbToCompare := % clipboard
;MsgBox % clipboard
;MsgBox % esbContainer
esbToCompare := StrReplace(esbToCompare, "/ESB Containers/", "")
MsgBox % esbToCompare
while (esbContainer <> esbToCompare)
{
Send, {Down}
}
send {Enter}
我希望它逐一突出显示每个目录,直到找到匹配项,然后 selects 那个目录,但是循环一直在继续。
由于您的 while 循环只包含 Send, {Down}
,它将停留在那个位置,因为您正在比较的变量在循环时不会改变。要修复它,您需要在 while 循环中包含更改变量的代码(esbToCompare
and/or esbContainer
)。
刚开始使用 AutoHotKey 进行自动化,对我的脚本中的循环有疑问。
我想做的是遍历应用程序中的文件树,按下直到到达所需的文件夹,然后 selecting 它。即使达到所需的值,我的 while 循环也不会停止。
我所做的是发送 ctrl-c 来复制树中第一个文件夹的值,将其存储在一个变量中,然后使用 while 循环将其与我要查找的内容进行比较。如果匹配,那么我 select 那个目录。
; parse file tree
Send, {Down 7}
Send, {Right}
Send, {Down}
Send, ^c
ClipWait
esbToCompare := % clipboard
;MsgBox % clipboard
;MsgBox % esbContainer
esbToCompare := StrReplace(esbToCompare, "/ESB Containers/", "")
MsgBox % esbToCompare
while (esbContainer <> esbToCompare)
{
Send, {Down}
}
send {Enter}
我希望它逐一突出显示每个目录,直到找到匹配项,然后 selects 那个目录,但是循环一直在继续。
由于您的 while 循环只包含 Send, {Down}
,它将停留在那个位置,因为您正在比较的变量在循环时不会改变。要修复它,您需要在 while 循环中包含更改变量的代码(esbToCompare
and/or esbContainer
)。