Как ускорить основной функционал «Поиск всего»

0

«Поиск по всему» ( http://www.voidtools.com/ ) - фантастическое бесплатное программное обеспечение, но в нем отсутствует базовая вещь - «Поиск по текущему пути». В настоящее время, если вы хотите найти файлы в текущей открытой папке в проводнике Windows, скажем ... "C: \ Temp", вам придется вручную перейти к "C: \", затем выбрать папку Temp, щелкните по нему правой кнопкой мыши, выберите опцию «Искать все» и только после того, как все, что вы получите, вы получите то, что вам нужно.

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

Лукас
источник

Ответы:

1

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

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

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

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

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

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

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

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

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

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

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::
        SearchEverythingInPath()
    return
#IfWinActive


; Invokes Search Everything app with the current path as the path argument
; Note: expecting to be run when the active window is Explorer.
;
SearchEverythingInPath()
{
    ; 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 Search Everything with the path atribute
        Run, "C:\Program Files\Everything\Everything.exe" -p "%full_path%"
    }
    else
    {
    }
}
Лукас
источник
0

или это:

 EverythingPath =  ;specify the path here

 #IfWinActive ahk_class CabinetWClass
 {
  F6::
    folder := GetFolder()
    run, %EverythingPath% -path "%folder%"
    return
 }

GetFolder()
{
   WinGetClass,var,A
   If var in CabinetWClass,ExplorerWClass,Progman
    {
    IfEqual,var,Progman
        v := A_Desktop
    else
    {
        winGetText,Fullpath,A
        loop,parse,Fullpath,`r`n
        {
            IfInString,A_LoopField,:\
            {
                StringGetPos,pos,A_Loopfield,:\,L
                Stringtrimleft,v,A_loopfield,(pos - 1)
                break
            }
        }
    }
   return, v
  }
}

https://gist.github.com/aviaryan/5418603

user3419297
источник
1
Добро пожаловать в SuperUser. Ваш ответ должен быть расширен. Пожалуйста, отредактируйте его, чтобы объяснить, почему ваше решение решает вопрос ОП.
Twisty Impersonator