Como acelerar a funcionalidade principal "Pesquisar tudo"

0

O "Search Everything" ( link ) é um fantástico software livre, mas falta uma coisa muito básica, que é " Pesquise dentro do caminho atual ". Atualmente, se você quisesse procurar os arquivos dentro da pasta atualmente aberta no Windows Explorer, digamos ... "C: \ Temp", você teria que manualmente ir até "C: \", então selecionar a pasta Temp, clique com o botão direito do mouse sobre ele, escolha a opção "Pesquisar tudo" e, depois de fazer tudo isso, você obterá o que precisava.

Existe alguma coisa que possa tornar este procedimento repetitivo menos doloroso?

    
por Lucas 23.10.2014 / 13:31

2 respostas

1

Eu pensei que deveria haver uma maneira melhor de fazer isso. Descobri que um criador dessa ferramenta se esforça para oferecer suporte a opções de linha de comando e, portanto, criei um pequeno script AutoHotkey que encurta todo o procedimento descrito no primeiro parágrafo para um atalho de teclado.

Nota importante é que o script é testado apenas no Windows7 x64, por isso não posso garantir que funcionará no Windows8, WindowsXP, etc.

O script obviamente precisa que o AutoHotkey esteja instalado na máquina, e o script deve ser executado em cada inicialização do Windows (assim, a maneira mais fácil seria copiar o link para o script ou copiar todo o script na pasta Autostart) para que ele possa capturar o atalho do teclado. O atalho é definido para Win + F, mas pode ser facilmente modificado dentro do script. Uma coisa a ter em mente, o script depende do caminho para o arquivo Everything.exe estar sob este caminho: "C: \ Arquivos de programas \ Everything \ Everything.exe"

Se estiver em outro lugar, modifique essa linha.

Ao escrever este script, usei como backbone, este script: link

que foi o único que encontrei em toda a web, que funcionou na minha máquina e retornou o caminho. Eu ajustei um pouco porque ele usava a palavra literal "Address" desnecessariamente e dependia do idioma local usado no sistema operacional do cliente, o que trazia uma grande limitação, e substituí-lo pela expressão regular para trabalhar em qualquer local (em teoria; )). Também o caminho tinha que ser formatado da maneira certa, então eu mudei isso. Depois disso, adicionei o código relevante para o aplicativo SearchEverywhere e adicionei alguns comentários também.

Para "instalar" o script, você precisa salvá-lo em um arquivo de texto com a extensão .ahk e executá-lo para que ele possa residir em segundo plano.

Assim, para a experiência do usuário, quando estiver tudo pronto, tudo o que você precisa fazer é pressionar o atalho (Win + F) com o Windows Explorer focado e o aplicativo Pesquisar tudo será iniciado com o caminho relevante inserido automaticamente na caixa de pesquisa. Tenha em mente que o Win + F padrão irá acontecer (isso é muito esperado e o comportamento desejado), se a janela atualmente focada no Windows não for exploradora. Se a página atual do explorador for aberta na página "Meu computador", esta chamada será totalmente ignorada.

Funciona muito bem, e espero que seja benéfico para outra pessoa, além de mim. Aproveite.

;////////////////////////////////////////////////////
;\\\\\\\\\\\\\\\\\\\\\\\\\\
;****************************************************
;*********                              *************
;*********    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
    {
    }
}
    
por 23.10.2014 / 13:31
0

ou isto:

 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
  }
}

link

    
por 28.11.2014 / 17:04