Рекурсивное зацикливание файлов на основе расширений

Я пытаюсь пройтись по каталогам, получить файлы, заканчивающиеся определенным расширением, и заполнить соответствующие файлы в текстовом поле. Тем не менее, мой цикл не выполняется. Вот что я придумал:

searchDir = D:\some_directory

^g:: CaptureLoop()

CaptureLoop(){
    Loop, Files, %searchDir%\*.xyz, R ; Recurse, get files with .xyz ext
    {
        MsgBox, loop ; Not reached
        SplitPath, %A_LoopFileLongPath%, file_name, dir, ext, name_no_ext, drive
        MsgBox, %name_no_ext% ; Populating this field is the goal.
    }
}

Я уверен, что мой каталог поиска содержит файлы.xyz. Моя платформа - Windows 7.

Одно из возможных решений

По какой-то причине AHK не может видеть мои строки, если они не находятся внутри функции. Это не похоже на стандартное поведение. Если у вас есть эта проблема, попробуйте переместить переменные внутри функции:

CaptureLoop(){
    searchDir = D:\some_directory
    Loop, Files, %searchDir%\*.xyz, R ; Recurse, get files with .xyz ext
    { ... }

1 ответ

Решение

Единственные причины, которые я вижу, в том, что

Попробуйте это как автономный скрипт:

#NoEnv
#SingleInstance Force

; If the script is not elevated, relaunch as administrator and kill current instance:

full_command_line := DllCall("GetCommandLine", "str")

if not (A_IsAdmin or RegExMatch(full_command_line, " /restart(?!\S)"))
{
    try ; leads to having the script re-launching itself as administrator
    {
        if A_IsCompiled
            Run *RunAs "%A_ScriptFullPath%" /restart
        else
            Run *RunAs "%A_AhkPath%" /restart "%A_ScriptFullPath%"
    }
    ExitApp
}

searchDir := "D:\some_directory"

        RETURN   ; === end of auto-execute section ===

^g:: CaptureLoop()

CaptureLoop(){
    Loop, Files, %searchDir%\*.xyz, R ; Recurse, get files with .xyz ext
    {
        MsgBox, loop
        SplitPath, A_LoopFileLongPath, file_name, dir, ext, name_no_ext, drive
        MsgBox, %name_no_ext% ; Populating this field is the goal.
    }
}
Другие вопросы по тегам