Bagaimana saya bisa mengikuti pintasan windows di PowerShell?


9

Saya menggunakan PowerShell dan saya memiliki jalan pintas ke direktori tujuan saya di direktori saat ini. Saya ingin mengubah direktori saat ini ke yang ditunjuk oleh pintasan. Secara logis yang ingin saya lakukan adalah:

cd your-files-here.lnk

dan berakhir di mana lebih dari titik itu. Apa yang saya dapatkan adalah:

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

Saya mencoba

ii your-files-here.lnk

Tapi ini membuka jendela explorer alih-alih mengubah direktori saat ini.

Jawaban:


5

Anda dapat menambahkan ini ke Microsoft.PowerShell_profile.ps1 mengajukan. Itu cd perintah kemudian akan berfungsi seperti yang diinginkan.

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

Saya harus mengubah "$ fullpath = resolve-path $ target" menjadi "$ fullpath = (teken-path $ target) .Path" untuk membuatnya berfungsi.
Omaer

Juga, saya perhatikan bahwa PowerShell auto-complete tidak berfungsi untuk non-direktori setelah saya mengetik "cd", yang berarti saya harus mengetikkan seluruh nama file .lnk sendiri.
Omaer

8

Sayangnya, Windows tidak membuatnya mudah untuk bekerja dengan cara pintas. Ini seharusnya bekerja:

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

Ini berfungsi di mana target adalah jalur lokal konvensional, tetapi setidaknya dalam satu kasus, jalan pintas menunjuk ke jalur UNC. Dalam hal ini, TargetPath kosong.
Matthew Scouten

Itu aneh, saya punya. Lnk pintasan ke jalur UNC dan properti. Targetpath memiliki jalur di dalamnya. Saya bahkan mencoba mengambil satu dan membuat targetpath kosong dan itu tidak akan menyelamatkan seperti itu.
EBGreen

Sudahlah. Saya melakukan sesuatu yang salah. Bekerja dengan baik.
Matthew Scouten

Anda harus memberi tahu kami apa yang salah sehingga generasi masa depan dapat memperoleh manfaat!
uSlackr

1
Singkatnya: CreateShortcut menginginkan jalur absolut.
Matthew Scouten

3

Apakah jalan pintas itu suatu keharusan?

Anda dapat menggunakan tautan Windows untuk ini. Lihat mklink /? untuk informasi lebih lanjut tentang tautan Windows / titik persimpangan.


Saya bukan orang yang memutuskan jalan pintas.
Matthew Scouten

1
Jawaban ini sangat membantu saya dan solusinya bekerja dengan lancar, bahkan jika secara teknis tidak menyelesaikan masalah (pintasan).
twigmac
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.