web-dev-qa-db-ja.com

Windowsショートカットに相対パスを使用する

私は(非常に簡略化されたバージョン)のようなフォルダスキームを持っています:

New Files
 >Tools
 >Scripts
Tested Files
 >Tools
 >Scripts

...そして各フォルダに "New Files"の子フォルダから "Tested Files"の子フォルダへのショートカットを作成します。しかし、このフォルダは時々動き回ってしまう可能性があり、これはショートカットを壊すことになります。

各フォルダへの相対ショートカットを作成する方法はありますか? .../Filesの行に沿って親に戻って新しいフォルダに移動するパスを設定できるHTMLでこれを行ったことを覚えていますが、これがWindowsのショートカットでサポートされているかどうかはわかりませんか。

シモンズ:ターゲットがファイルであるとき、同様に相対的なショートカットの場合は、で処理されます https://stackoverflow.com/questions/1169556/making-a-windows-shortcut-start - フォルダの相対位置 。今回の場合、ターゲットはフォルダです。

46
Gary Morris

このユーティリティを使用することができます: 相対的な

それは基本的に右クリックであなたの相対パスのパラメータで "Explorer.exe"へのショートカットを作成します(あなたが通常のショートカットを作成するのと同じ方法で)。

もちろんこれは手動でも可能です。
あなたの例では、 "New Files\Tools"にショートカットを作成します。

%windir%\Explorer.exe "..\..\Tested Files\Tools"

これには、Windowsの通常のコンテキストメニュー「ショートカットの新規作成/作成」を使用し、「アイテムの場所を入力してください」ボックスに上記のコマンドを入力します。

48
Rik

考えられる解決策の1つは、ショートカットの代わりに1行のバッチファイルを使用して、開きたいものをすべて開くことです。バッチファイルでは、内部で相対パスを使用することができ、バッチファイルが配置されているフォルダの作業ディレクトリがあります。


もう一つの選択肢はあなたのショートカットがあなたが起動しているものではなくcmd.exeで開始し、起動しているものは何でもcmd.exeへの引数として渡すことです

enter image description here

%COMSPEC%は、環境変数で、デフォルトでコマンドプロンプトを指す。

/Cは、コマンドの実行後にコンソールを自動的に閉じます。

29

このトリックはうまくいきます:

%COMSPEC%/ C開始「パスなしのexe名」

%COMSPEC%/ C start winmine.exe

6

私のWeb開発環境を実行するテンプレートで同様の解決策を使用しています(プロジェクトディレクトリを開く、ブラウザを開く、WAMPを実行する、SCSSを実行する...)

enter image description here

Batスクリプトなどに引数を渡すことができます。これはクールです。 /cの後に必ずcmd.exe引数を置くようにしてください

6
Hrvoje Golcic

あなたは mklink を使うことができます。シンボリックリンク、ハードリンク、ディレクトリリンクを作成することができます。

 mklink /d Tools "..\Tested Files\Tools"  (elevated command Prompt)

昇格したアクセスがない場合は、/ jを使用できます。

 mklink /j Tools "..\Tested Files\Tools"

構造全体を移動するには、xcopyコマンドを使用してください。たとえば、すべての構造がコンテナの下にあるとします。

container
   New Files
      <SYMLINKD> Scripts [..\Tested Files\Scripts]
      <SYMLINKD> Tools  [ ..\Tested Files\Tools]
   Tested Files    
      Scripts
      Tools

コマンドを入力する

 copy /b /e container container2

次のような構造になります。

container2
   New Files
      <SYMLINKD> Scripts [..\Tested Files\Scripts]
      <SYMLINKD> Tools  [ ..\Tested Files\Tools]
   Tested Files    
      Scripts
      Tools

/ bスイッチは、フォルダに変換する代わりに、シンボリックリンクをコピーします。

2
Krauss

ショートカットのプロパティで'Start In'ボックスを空のままにした場合、リンクは現在の作業ディレクトリからの相対パスになります。

https://stackoverflow.com/a/17951772/40961 もご覧ください。

1

ショートカットはその位置を変数に記録し、その変数を使用してコマンドを呼び出すことができます。たとえば、targetでショートカット "Grandparent"を作成します。

%windir%\system32\cmd.exe /c set HERE="%CD%" && "C:\Here.bat"

1行でバッチファイル "C:\ Here.bat"を作成します。

@%windir%\Explorer.exe /n,/select, %HERE%

さて、あなたがそれをクリックすると、Grandparentがどんなフォルダにあっても、その親フォルダの親は開きます。ルートディレクトリのGrandparentでも動作します。

あなたのバッチファイルはExplorer.exe以外の何かを始めるのに%HERE%を使用したかもしれません。ショートカットターゲットの&&の後のHere.batの代わりに、%HERE%を使用するプログラムを呼び出すこともできます。

私のシステムでは、Grandparentは&または&&と一緒に機能するようです。

1
mudr

ファイルシステム構造内のターゲットフォルダーまたはその上のフォルダーへの(相対)パスを含む環境変数を作成できます。

例:

  • 環境変数:

    %Dropbox%= "C:\ Users\User 1\Dropbox"

  • ショートカットターゲット:

    「%Dropbox%\ Install\Utilities\File.exe」

DOSコマンドSETXを使用して、環境変数を作成できます。

0
gmoises