Güç kabuğundaki bir pencere kısayolunu nasıl takip edebilirim?


11

Powershell kullanıyorum ve geçerli dizindeki hedef dizinime bir kısayol var. Geçerli dizini kısayolun işaret ettiği dizine değiştirmek istiyorum. Mantıksal olarak ne yapmak istiyorum:

cd your-files-here.lnk

ve bu noktaların üzerinde bir yere sarın. Bunun yerine ne olsun:

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

denedim

ii your-files-here.lnk

Ancak bu, geçerli dizini değiştirmek yerine bir gezgin penceresi açar.

Yanıtlar:


6

Bunu Microsoft.PowerShell_profile.ps1dosyanıza ekleyebilirsiniz . cdİstediğiniz gibi komut sonra çalışacaktır.

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

Çalışmak için "$ fullpath = çözüm yolu $ hedef" "$ fullpath = (çözüm yolu $ hedef) .Path" değiştirmek zorunda kaldı.
Omaer

2
Ayrıca, "cd" yazdıktan sonra PowerShell otomatik tamamlama dizinler için çalışmadığını fark ettim, yani .lnk dosyasının tam adını kendim yazmak zorunda demektir.
Omaer

8

Ne yazık ki, Windows kısayollarla çalışmayı kolaylaştırmaz. Bu çalışmalı:

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

Bu, hedefin geleneksel bir yerel yol olduğu durumlarda çalışır, ancak en az bir durumda, kısayol UNC yolunu işaret eder. Bu durumda, TargetPath boştur.
Matthew Scouten

Bu tuhaf, UNC yollarına .lnk kısayolları var ve .Targetpath özelliği içinde yol vardır. Hatta bir tane alıp hedef yolunu boş tutmaya çalıştım ve bu şekilde tasarruf etmeyecekti.
EBGreen

Boşver. Yanlış bir şey yapıyordum. İyi çalışıyor.
Matthew Scouten

Gelecek nesillerin faydalanabilmesi için neyin yanlış olduğunu bize söylemelisin!
uSlackr

1
Kısacası: CreateShortcut mutlak bir yol istiyor.
Matthew Scouten

3

Kısayol bir zorunluluk mu?

Bunun için bir Windows bağlantısı kullanabilirsiniz. mklink /?Windows bağlantıları / bağlantı noktaları hakkında daha fazla bilgi için bkz .


Kısayollara karar veren ben değilim.
Matthew Scouten

1
Bu cevap bana çok yardımcı oldu ve çözüm sorunsuz çalıştı, eğer teknik (kısayol) problemini çözmezse olay.
twigmac
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.