1

Этот вопрос связан с аналогичной проблемой в другом приложении типа поиска. (Как ускорить основной функционал "Поиск по всему")

"Agent Ransack" - очень хорошее программное обеспечение для поиска строк в файлах, но в нем отсутствует базовая вещь - "Поиск по текущему пути". В настоящее время, если вы хотите найти файлы в текущей открытой папке в проводнике Windows, скажем ... "C:\Temp", вам придется вручную перейти к "C:\", затем выбрать папку Temp, щелкните по нему правой кнопкой мыши, выберите опцию "Agent Ransack" и только после всего, что вы получите, получите то, что вам нужно

Что-нибудь может сделать эту повторяющуюся процедуру менее болезненной?

1 ответ1

1

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

Очень важно отметить, что скрипт протестирован только на Windows7 x64, поэтому я не могу гарантировать, что он будет работать на Windows8, WindowsXP и т.д.

Сценарию, очевидно, требуется, чтобы AutoHotkey был установлен на компьютере, и сценарий должен запускаться при каждой загрузке Windows (поэтому самый простой способ - скопировать ссылку на сценарий или скопировать весь сценарий в папку Autostart), чтобы он может захватить сочетание клавиш. Ярлык установлен для Win+Shift+F, но его можно легко изменить в скрипте. Следует иметь в виду, что сценарий зависит от пути к файлу Everything.exe, который должен находиться по этому пути: Запустите «C:\Program Files\Agent Ransack\AgentRansack.exe»

Если это где-то еще, измените эту строку.

При написании этого скрипта я использовал в качестве основы этот скрипт:https://superuser.com/a/205368/172360

которая была единственной, которую я мог найти во всей сети, которая работала на моей машине и возвращала путь. Я немного подправил его, потому что оно использовало буквальное слово "Address" без необходимости, и оно зависело от локального языка, используемого в клиентской ОС, что давало большие ограничения, и поэтому я заменил его регулярным выражением для работы в любой локали (теоретически;)). Также путь должен был быть правильно сформирован, поэтому я изменил это. После этого я добавил соответствующий код для приложения Agent Ransack, также добавил несколько комментариев.

Чтобы "установить" скрипт, вы должны сохранить его в текстовом файле с расширением .ahk и запустить так, чтобы он мог находиться в фоновом режиме.

Так что для удобства пользователя, как только вы все настроите, все, что вам нужно сделать, это нажать на ярлык (Win+Shift+F) с фокусом в проводнике Windows, и приложение Agent Ransack будет запущено с соответствующим путем, введенным автоматически в окно поиска. Имейте в виду, что по умолчанию Win+Ctrl+F произойдет (это очень ожидаемое и желаемое поведение), если текущее окно в окне не является проводником. Если текущая страница проводника открыта на странице "Мой компьютер", этот вызов будет полностью проигнорирован.

Это прекрасно работает, и я надеюсь, что это будет полезно для кого-то еще, кроме меня. Наслаждаться.

;////////////////////////////////////////////////////
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
;****************************************************
;*********                              *************
;*********    Written by:               *************
;*********                 soyo/Luk     *************
;*********                              *************
;*********   Search Ransack: ver1_0_0   *************
;*********                              *************    
;****************************************************
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
;////////////////////////////////////////////////////

#NoTrayIcon

SetTitleMatchMode RegEx
return

; Stuff to do when Windows Explorer is open
;
#IfWinActive ahk_class ExploreWClass|CabinetWClass

    ; When user presses Win+F in an explorer window, we Search Everything within this path
    ; If Other shortcut is required, it can be changed here
    ;
    #+f::
        SearchWithAgentRansackInPath()
    return
#IfWinActive


; Invokes Ransack Agent app with the current path as the path argument
; Note: expecting to be run when the active window is Explorer.
;
SearchWithAgentRansackInPath()
{
    ; This is required to get the full path of the file from the address bar
    WinGetText, full_path, A

    ; Split on newline (`n)
    StringSplit, word_array, full_path, `n  

    ; Find and take the element from the array that contains address
    Loop, %word_array0%
    {
        FoundPrefixOccurance := RegExMatch(word_array%A_Index%, ".*:\\*")
        if(FoundPrefixOccurance > 0)
        {        
            full_path := word_array%A_Index%
            break
        }
    }  

    ; strip to bare address
    full_path := RegExReplace(full_path, "^" ".*: ", "")

    ; Just in case - remove all carriage returns (`r)
    StringReplace, full_path, full_path, `r, , all

    IfInString full_path, \
    {
        ; We remove the last backslash if there is any in the stipped path, this happens when the path is a root of a partition so
        ; for example "C:\"
        full_path := RegExReplace(full_path, "\\$" "" )
        ; After we are sure we have a stripped path without the backslash at the end, now we can safely add a backslash
        full_path = %full_path%\        
        ; We run Agent Ransack with the path atribute
        Run, "C:\Program Files\Agent Ransack\AgentRansack.exe" -d "%full_path%"
    }
    else
    {
    }
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .