Як я можу слідкувати за ярликом Windows у панелі живлення?


11

Я використовую 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

Але це відкриє вікно провідника замість зміни поточного каталогу.

Відповіді:


6

Ви можете додати це у свій 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
    }
}

Мені довелося змінити "$ fullpath = рішення-шлях $ target" на "$ fullpath = (рішення-шлях $ target). Шлях", щоб змусити його працювати.
Омаєр

2
Крім того, я помітив, що автоматичне завершення програми PowerShell не працює для не-каталогів після того, як я набираю "cd", а значить, я сам повинен вводити все ім'я .lnk-файлу.
Омаєр

8

На жаль, Windows не спрощує роботу з ярликами. Це має працювати:

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

Це працює, коли ціль - це звичайний локальний шлях, але принаймні в одному випадку ярлик вказує на шлях UNC. У цьому випадку TargetPath порожній.
Метью Скаутен

Це не дивно, у мене є ярлики .lnk до шляхів UNC, а властивість .Targetpath має шлях у ньому. Я навіть спробував взяти один із них і зробити цільовий шлях порожнім, і це не врятує.
EBGreen

Не звертай уваги. Я робив щось інше не так. Добре працює.
Меттью Скаутен

Ви повинні сказати нам, що було не так, щоб майбутні покоління могли отримати користь!
uSlackr

1
Якщо коротко: CreateShortcut хоче абсолютний шлях.
Меттью Скаутен

3

Чи потрібний ярлик?

Ви можете використовувати для цього посилання Windows. Для mklink /?отримання додаткової інформації про посилання / точки з'єднання Windows.


Я не той, хто зважився на ярлики.
Метью Скаутен

1
Ця відповідь була надзвичайно корисною для мене, і рішення працювало безперебійно, якщо це технічно не вирішить проблему (ярлик).
twigmac
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.