1

Я хочу сделать ярлык Windows, который открывает javaw.exe в переменной назначения. Это место назначения - содержимое моей системной переменной среды %MY_OWN_JAVA_HOME% .

Я пытался сделать:

  1. щелкните правой кнопкой мыши в папке (с помощью проводника Windows)
  2. New => Shortcut
  3. пункт назначения: %MY_OWN_JAVA_HOME%\bin\javaw.exe -cp ......
  4. Next Finish

Проблема в том, что переменная окружения вычисляется во время создания. Когда я открываю настройки этой переменной среды, то используется текущее значение переменной.

Как мне сохранить переменную в качестве места назначения моего ярлыка?

3 ответа3

1

Вы все еще должны иметь возможность создать ярлык с переменной среды, используя COM-объект из VBScript или powershell. Метод « CreateShortcut » (более подробно также для аргументов здесь) способен на это. Хотя изначально это решение vbscript, вы можете вызвать его из командной строки powershell, например так:

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

Обратите внимание, что аргументы не попадают в целевой путь. Также это может не сработать, если ваша переменная окружения содержит пробелы. Преимущество этого в том, что у вас есть настоящий ярлык, а не какая-то обертка, недостаток в том, что вы никогда не сможете изменить этот ярлык через диалоговое окно его свойств. Как только вы сделаете это, переменная снова будет заменена.

Если вы хотите обертку, я бы также предложил файл VBS, который полностью молчит. Создайте новый текстовый файл и вставьте строку

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

там и сохраните его как «runmyjava.vbs» и создайте ярлык для этого файла, и у него не будет черных всплывающих окон, даже на доли секунды. Обратите внимание на дополнительные "" перед после пути к исполняемому файлу. Они нужны только в том случае, если переменная окружения содержит пробелы.

0

Одним из решений является использование ярлыка .lnk , созданного в Windows XP. Эти ярлыки сохранят ваши переменные в месте назначения ярлыка - даже если вы измените место назначения.


Другое решение, как предлагает @DavidPostill в комментариях, использовать пакетный файл, подобный этому, в качестве цели ярлыка:

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

Затем выберите "Свернуть" в настройках ярлыка.

Это решение отлично работает, но на секунду открывает свернутое cmd-всплывающее окно.

-1

Я хочу предложить другое решение, которое работает в Windows Vista, хотя я не знаю, работает ли оно в более новых версиях Windows: по моему опыту защита от записи .lnk всегда будет препятствовать расширению переменных назначения / назначения. Они часто раскрываются при создании .lnk (или при его использовании), но их можно повторно вставить, а затем сохранить путем защиты от записи .lnk перед его использованием (в следующий раз).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .