.lnk ショートカットの環境変数

.lnk ショートカットの環境変数

javaw.exeすぐに開くWindowsのショートカットを作成したい可変宛先この宛先はシステム環境変数の内容です%MY_OWN_JAVA_HOME%

私がやろうとしたこと:

  1. フォルダを右クリック(Windowsエクスプローラーを使用)
  2. New=>Shortcut
  3. 行き先:%MY_OWN_JAVA_HOME%\bin\javaw.exe -cp ......
  4. NextFinish

問題は、環境変数が作成時に計算この環境変数の設定を開くと、現在変数の値が使用されます。

変数をショートカットの保存先として保持するにはどうすればよいですか?

答え1

VBScript または PowerShell の COM オブジェクトを使用して、環境変数付きのショートカットを作成することもできます。メソッド "ショートカットを作成「(引数の詳細についてはここ) はそれが可能です。元々は vbscript ソリューションですが、次のように PowerShell プロンプトから呼び出すことができます。

$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("C:\Users\Public\Desktop\My Java Shortcut.lnk")
$Shortcut.TargetPath = "%MY_OWN_JAVA_HOME%\javaw.exe"
$Shortcut.Arguments = "-cp"
$Shortcut.Save()

引数はターゲット パスには入らないことに注意してください。また、環境変数にスペースが含まれている場合は機能しない可能性があります。これの利点は、ラッパーではなく実際のショートカットを使用できることです。欠点は、このショートカットをプロパティ ダイアログから変更できないことです。これを実行するとすぐに、変数が再び置き換えられます。

ラッパーが必要な場合は、完全に無音のvbsファイルもお勧めします。新しいテキストファイルを作成し、次の行を貼り付けます。

CreateObject("WScript.Shell").Run """%MY_OWN_JAVA_HOME%\bin\javaw.exe"" -cp", , False

そこに「runmyjava.vbs」として保存し、そのファイルへのショートカットを作成すると、一瞬たりとも黒いポップアップが表示されなくなります。実行可能ファイルへのパスの後に、先頭に余分な「」があることに注意してください。これらは、環境変数にスペースが含まれている場合にのみ必要です。

答え2

.lnk1 つの解決策は、Windows XP で作成されたショートカット ファイルを使用することです。これらのショートカットでは、ショートカットの保存先を変更しても、変数はショートカットの保存先に保持されます。


別の解決策としては、@DavidPostill がコメントで提案しているように、次のようなバッチ ファイルをショートカット ターゲットとして使用することです。

@echo off
start "" "%MY_OWN_JAVA_HOME%\bin\javaw.exe" %*

次に、ショートカット オプションで「最小化」を選択します。

この解決策は問題なく機能しますが、最小化された cmd ポップアップが 1 秒間開きます。

答え3

アプリケーションを実行するには、「ターゲット」が「cmd /k」で「start "" /B」を実行するショートカットを作成します。

コマンド プロセッサ (cmd) は環境変数を解決し、Start が完了すると終了します。Start はウィンドウなしでアプリケーションを実行します (ただし、私の場合はまだ点滅します)。

ノート:

  • コマンドプログラム(開始)とプログラムの引数の単一の引数が必要です
  • 始めるプログラムとプログラムの引数に別々の引数が必要
  • %CD% はショートカットの「開始」パスに解決されます。%CD% がショートカットのパスに解決されるようにするには、「開始」をクリアします。
  • ターゲット コマンド ラインが Explorer/WshShell に対して長すぎる場合は、別のライブラリ (例: liblnk) を使用してショートカットを作成するか、別のバッチ ファイルを呼び出す必要があります。
cmd /k "<<START COMMAND>>"

cmd /k "start "" /B "<<PROGRAM>>" <<PROGRAM ARGUMENTS>>"

cmd /K "start "" /B "%MY_OWN_JAVA_HOME%\bin\javaw.exe" %*"

答え4

Windows Vista で機能する別の解決策を提案したいと思いますが、新しいバージョンの Windows で機能するかどうかはわかりません。私の経験では、.lnk ファイルを書き込み保護すると、常にターゲット/宛先変数が展開されなくなります。これらは、.lnk の作成時 (または使用時) に展開されることがよくありますが、使用前 (次回) に .lnk を書き込み保護することで、再挿入して維持することができます。

関連情報