Power Shellで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 = resolve-path $ target」を「$ fullpath =(resolve-path $ target).Path」に変更して機能させる必要がありました。
Omaer 2017年

2
また、「cd」と入力した後、ディレクトリ以外ではPowerShellオートコンプリートが機能しないことに気づきました。つまり、.lnkファイルの名前全体を自分で入力する必要があります。
Omaer 2017年

8

残念ながら、Windowsではショートカットを簡単に操作できません。これはうまくいくはずです:

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

これは、ターゲットが従来のローカルパスの場合に機能しますが、少なくとも1つのケースでは、ショートカットがUNCパスを指しています。この場合、TargetPathは空です。
Matthew Scouten

奇妙なことに、UNCパスへの.lnkショートカットがあり、.Targetpathプロパティにパスが含まれています。私は1つを取り、targetpathを空にしてみましたが、それはそのように保存されません。
EBGreen

気にしないで。私は何か他のことをしていました。正常に動作します。
Matthew Scouten

将来の世代が利益を得られるように、何が悪かったのか教えてください!
uSlackr 2012

1
つまり、CreateShortcutは絶対パスを必要とします。
Matthew Scouten

3

ショートカットは必要ですか?

これにはWindowsリンクを使用できます。mklink /?Windowsリンク/ジャンクションポイントの詳細については、を参照してください。


ショートカットを決めたのは私ではありません。
マシュー・スカウテン、

1
この回答は私にとって非常に役に立ち、ソリューションがスムーズに機能しました。技術的に(ショートカット)問題が解決しなかった場合です。
twigmac
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.