windows用命令行打開(kāi)應(yīng)用

用windows擼代碼想找找mac和Linux的感覺(jué),命令行操作是必備的,不然感覺(jué)被束縛了手腳;還好現(xiàn)在有各種win終端工具,也有windows自己的PowerShell,又找回命令行隨心所欲的感覺(jué)。
對(duì)于像mac上Spotlight快速打開(kāi)應(yīng)用的工具,PowerShell也有自己的腳本模塊可以解決這一問(wèn)題。

PowerShell 腳本模塊

腳本模塊實(shí)質(zhì)上是以.psm1擴(kuò)展名保存的任何有效的PowerShell腳本。該擴(kuò)展允許PowerShell引擎在您的文件上使用許多規(guī)則和cmdlet。大多數(shù)這些功能都可以幫助您將代碼安裝在其他系統(tǒng)上,并管理范圍界定。您也可以使用模塊清單文件,它可以描述更復(fù)雜的安裝和解決方案。

打開(kāi)應(yīng)用

function run () {
    param
    (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true)]
        [string[]]$name
    )
    function exec ([string]$name) {
        $WshShell = New-Object -ComObject WScript.Shell
        $UserLnkFolder = "$env:APPDATA\Microsoft\Windows\Start Menu\Programs"
        $MachineLnkFolder = "$env:ProgramData\Microsoft\Windows\Start Menu\Programs"
        $lnkList1 = Get-ChildItem -Path $UserLnkFolder -Filter *.lnk -Recurse
        $lnkList2 = Get-ChildItem -Path $MachineLnkFolder -Filter *.lnk -Recurse
        $lnkList = $lnkList1 + $lnkList2
        $programPathList = @()
        $programNameList = @()
        foreach ($lnk in $lnkList) {
            $LnkFilePath = $Lnk.FullName
            $LnkShortcut = $WshShell.CreateShortcut($LnkFilePath)
            $LnkTargetPath = $LnkShortcut.TargetPath
            if (!([String]::IsNullOrEmpty($LnkTargetPath))) {
                if (Test-Path -Path $LnkTargetPath) {
                    $CurrentProgramList = @()
                    $CurrentProgramList += Get-Item $LnkTargetPath
                    $CurrentProgramList += Get-Item $LnkFilePath
                    if (!($name.Contains('*'))) {
                        $name = "*$name*"
                    }
                    foreach ($program in $CurrentProgramList) {
                        if ($program.name -like $name -and $program -notin $programNameList) {
                            $programPathList += $LnkTargetPath
                            $programNameList += $program.name
                        }
                    }
                }
            }
        }
        
        $programPathList = $programPathList | Sort-Object -Unique
        if ($programPathList -ne $null) {
            if ($programPathList -isnot [array]) {
                Invoke-Item $programPathList
            }
            else {
                $selectedFile = @($programPathList | Out-GridView -Title 'Choose a program' -PassThru)
                if ($selectedFile -ne $null) {
                    Invoke-Item $selectedFile
                }
            }
        }
        else {
            Write-Output "The $name program dones't exist."
        }
    }
    
    if ($name -isnot [array]) {
        exec $name
    }
    else {
        foreach ($i in $name) {
            exec $i
        }
    }
}

上面這塊腳本,可以直接貼到PowerShell回車(chē)執(zhí)行,然后你可以使用run wechat打開(kāi)你的微信,也可以run wechat, qq同時(shí)打開(kāi)QQ,如果匹配多個(gè)程序會(huì)讓你選擇。但是關(guān)閉終端后再次打開(kāi)臨時(shí)執(zhí)行環(huán)境就沒(méi)有了,我們需要將模塊保存隨時(shí)可用。

模塊路徑

可以參考官方詳細(xì)說(shuō)明:https://msdn.microsoft.com/en-us/library/dd878340(v=vs.85).aspx
大概就是需要將腳本模塊${name}.psm1保存到模塊管理指定目錄。
目錄需要在使用時(shí)創(chuàng)建:

PS C:\Users\luke> $paths = (dir Env:\PSModulePath).Value.Split(";")
PS C:\Users\luke> $paths
C:\Users\luke\Documents\WindowsPowerShell\Modules
C:\Windows\system32\WindowsPowerShell\v1.0\Modules\

判斷是否已創(chuàng)建:

PS C:\Users\luke> Test-Path -Path $paths[0]
False

返回False,則表示路徑未創(chuàng)建。創(chuàng)建路徑可使用文件瀏覽器、Cmd命令或者PowerShell命令。這里使用PowerShell命令如下:

New-Item -Path $paths[0] -ItemType directory  -Force

最后一步,我們將run.psm1保存到C:\Users\luke\Documents\WindowsPowerShell\Modules\run\下就可以每次打開(kāi)PowerShell都能找到這個(gè)模塊。

PowerShell 腳本模塊可以有更多操作,感興趣可以閱讀文檔自己寫(xiě)模塊玩。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,533評(píng)論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,261評(píng)論 6 342
  • linux資料總章2.1 1.0寫(xiě)的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無(wú)法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,199評(píng)論 2 33
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語(yǔ)言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲(chóng)de夢(mèng)閱讀 100,603評(píng)論 9 468
  • 夏日麥飄香 農(nóng)民收獲忙 往昔鐮刀揮舞把麥割 今日機(jī)器轟隆麥入倉(cāng)
    小張姐閱讀 394評(píng)論 0 2

友情鏈接更多精彩內(nèi)容