Atalho Powershell para iniciar aplicativos usados com freqüência

0

Existem provavelmente algumas dezenas de aplicativos que uso diariamente. Estes são aplicativos que não são "instalados", mas residem em algum lugar no sistema de arquivos. O lançamento de qualquer um deles envolve algo assim:

e:
cd \PortableApps\FileZillaPortable
FileZillaPortable.exe

(Não, nem todos são 'portableapps', portanto, usar o lançador de aplicativos portátil não resolve o problema. No entanto, eu tenho a tendência de colocá-los na pasta PortableApps.) Eu gostaria de fazer um caminho mais rápido para acessar estes. Eu poderia colocar uma tonelada de arquivos em lote em algum lugar no caminho, mas .. Que bagunça!

Como estou constantemente usando uma janela do PowerShell, achei que seria bom ter um atalho que ativasse meus apps.

Como posso criar um único atalho legal que funcione para todos esses aplicativos?

    
por Rob M 26.07.2017 / 23:15

2 respostas

1

Eu adicionei o seguinte script ao meu perfil. Agora tudo o que preciso fazer em um prompt do powershell é digitar p (space) (ctrl-space) e começar a digitar o nome do aplicativo. Ou eu posso digitar p -AppName . (o completer aparece depois de pressionar a barra de espaço) Note que você não precisa digitar o nome completo; O script p abrirá o primeiro aplicativo cujo nome corresponda ao seu valor.

(Aliás,useioLICECapparafazeroGIFanimado.)

Esteémeuprimeiropassonisso.Qualquersugestãodemelhoriaseriaapreciada.

Paraseuuso,vocêsóprecisaráadicionarseuscaminhosaoarrayapproots.

$Global:approots=@("E:\PortableApps",
($env:USERPROFILE+"\Downloads")
)
if (-not (Test-Path ($PSScriptRoot+"\AppShortcuts.txt"))) {
    $approots | %{
        $approot = $_
        dir -Recurse ($approot+"\*.exe") | 
        %{ $_.Name.Remove($_.Name.LastIndexOf(".")) + "'t" + $_.FullName } 
    } |
    sort | Out-File -FilePath ($PSScriptRoot+"\AppShortcuts.txt")
}    
function global:p {
    <#
    .SYNOPSIS 
    Launch a portable app.
    .DESCRIPTION
    Launches a portable app whose name starts with the supplied parameter.
    .EXAMPLE
    p filezil
    .PARAMETER PartialFileName
    The beginning of the name of a portable app's EXE file
    #>    
    [CmdletBinding()]
    Param($AppName="start.exe")

    process {
        if (-not (Test-Path ($PSScriptRoot+"\AppShortcuts.txt"))) {
            $approots | %{
                $approot = $_
                dir -Recurse ($approot+"\*.exe") | 
                %{ $_.Name.Remove($_.Name.LastIndexOf(".")) + "'t" + $_.FullName } 
            } |
            sort | Out-File -FilePath ($PSScriptRoot+"\AppShortcuts.txt")
        }    
        gc ($PSScriptRoot+"\AppShortcuts.txt") | ?{ $_.Substring(0,$_.IndexOf("'t")).StartsWith($AppName) }|
        select -first 1 | %{ start ($_.SubString($_.IndexOf("'t")+1)) }
    }
}
Register-ArgumentCompleter -CommandName 'p' -ParameterName 'AppName' -ScriptBlock {
    # learned this from icklicksick on https://www.reddit.com/r/PowerShell/comments/5nqw4m/adding_tabcompletion_to_your_powershell_functions/
    param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameter)
    gc ($PSScriptRoot+"\AppShortcuts.txt") | %{$val=$_.Substring(0,$_.IndexOf("'t"));[System.Management.Automation.CompletionResult]::new($val, $val, 'ParameterValue', $val)}
}

A essência deste código é criar um arquivo de texto que contenha uma lista de nomes de aplicativos e seus caminhos completos. (delimitado por tabulações) Em seguida, a função p permite procurar aplicativos cujo nome comece com o parâmetro AppName . Em seguida, usamos Register-ArgumentCompleter para adicionar todos os nomes de aplicativos à lista de valores possíveis para AppName .

    
por 26.07.2017 / 23:15
0

De volta ao DOS 3.2 dias Eu fiz arquivos em lote para criar atalhos. Eu tinha uma pasta inteira deles e então coloquei essa pasta na minha variável PATH para que eu pudesse executá-los, como comandos, de qualquer lugar.

No LINUX, as pessoas geralmente despejam todos os seus binários em uma pasta /usr/bin e colocam isso na variável PATH. O equivalente no Windows estaria usando algo como:

%userprofile%\bin\

Coloque isso no seu PATH. Então despeje todos os seus binários lá. (Eu sei que isso parece confuso, mas seria super fácil)

    
por 27.07.2017 / 00:17