題 如何在電源外殼中使用Windows快捷方式?


我正在使用PowerShell,並且我在當前目錄中有一個到目標目錄的快捷方式。我想將當前目錄更改為快捷方式指向的目錄。從邏輯上講,我想做的是:

cd your-files-here.lnk

並結束那些點。我得到的是:

Set-Location : Cannot find path 'your-files-here.lnk' because it does not exist.
At C:\Windows\system32\WindowsPowerShell\v1.0\Modules\pscx\Modules\CD\Pscx.CD.psm1:111 char:17
+                 Set-Location <<<<  $path -UseTransaction:$UseTransaction
    + CategoryInfo          : ObjectNotFound: (your-files-here.lnk:String) [Set-Location], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.SetLocationCommand

我試過了

ii your-files-here.lnk

但這會打開一個資源管理器窗口,而不是更改當前目錄。


9
2018-02-23 18:10


起源




答案:


您可以將此添加到您的 Microsoft.PowerShell_profile.ps1 文件。該 cd 然後命令將按預期工作。

remove-item alias:cd -force
function cd($target)
{
    if($target.EndsWith(".lnk"))
    {
        $sh = new-object -com wscript.shell
        $fullpath = resolve-path $target
        $targetpath = $sh.CreateShortcut($fullpath).TargetPath
        set-location $targetpath
    }
    else {
        set-location $target
    }
}

5
2017-09-12 19:18



我不得不將“$ fullpath = resolve-path $ target”更改為“$ fullpath =(resolve-path $ target).Path”以使其工作。 - Omaer
另外,我注意到在輸入“cd”後,PowerShell自動完成對非目錄不起作用,這意味著我必須自己鍵入.lnk文件的全名。 - Omaer


遺憾的是,Windows無法輕鬆使用快捷方式。這應該工作:

$sh = New-Object -COM WScript.Shell
cd $sh.CreateShortcut('your-files-here.lnk').TargetPath

8
2018-02-23 18:16



這適用於目標是傳統本地路徑的情況,但至少在一種情況下,快捷方式指向UNC路徑。在這種情況下,TargetPath為空。 - Matthew Scouten
這很奇怪,我有.lnk快捷方式到UNC路徑,而.Targetpath屬性中有路徑。我甚至試過拿一個並使目標路徑為空,它不會保存這種方式。 - EBGreen
沒關係。我做錯了什麼。工作良好。 - Matthew Scouten
你應該告訴我們出了什麼問題,這樣後代才能受益! - uSlackr
簡而言之:CreateShortcut想要一個絕對路徑。 - Matthew Scouten


捷徑是必需的嗎?

您可以使用Windows鏈接。看到 mklink /? 有關Windows鏈接/聯結點的更多信息。


3
2018-02-23 18:23



我不是那個決定捷徑的人。 - Matthew Scouten
這個答案對我非常有幫助,並且解決方案工作順利,如果它在技術上無法解決(快捷方式)問題。 - twigmac