Можно ли установить переменную среды для приложения с помощью ярлыка в Windows?

У меня такое чувство, что я должен иметь возможность добавить каталог в переменную среды PATH на основе времени жизни приложения, но я не могу понять, как это сделать. Можно ли добавить параметр в ярлык Windows, который добавляет каталог к ​​текущему значению PATH для использования связанным приложением?

4 ответа

Решение

Позвольте ярлыку выполнить командный файл (.cmd), который

  • Устанавливает переменную среды
  • выполнить приложение
  • Вы используете "START" для запуска приложения, это запустит приложение в другом процессе, но скопирует среду. Вы не ждете, пока приложение закончится.
  • Теперь вы можете выйти из командного файла.

Должно выглядеть так:

@echo off
set path=%path%;C:\My Folder
start "Path to my exe"

Как объяснено здесь: http://www.labs64.com/blog/2012/06/set-environment-variables-in-windows-shortcut/ вы можете сделать это и без bat-файла.

Установите Цель, например:

C:\Windows\System32\cmd.exe /c "SET path=%path%&& START /D ^"C:\Program Files (x86)\Notepad++^" notepad++.exe"

Чтобы не видеть командную строку в течение доли секунды, прежде чем она снова закроется, следует установить

Run: Minimized 

на вкладке "Ярлык"

(Проверено на Windows 7, Windows 10)

Прямая ссылка на командный файл порождает раздражающую консоль, которую вы, вероятно, хотите избежать. Вот обходной путь. Более простое решение - использовать опцию "Start Minimized" в вашей ссылке, но в Windows 7 вы увидите мгновенную консоль, которая подсвечивает вашу панель задач.

start.bat:

@echo off
IF "%1" == "" GOTO Error
IF "%2" == "" GOTO Error
IF NOT EXIST %2 GOTO Error
SET PATH=%1;%PATH%
start %2
GOTO End

:Error
echo Problem!
pause

:End

ярлык цель:

MyPath = "C:\MyApp"
Set shell = WScript.CreateObject("WScript.Shell")
cmd = "start.bat " & MyPath & " MyApp.exe"
shell.Run cmd, 0, false
Set env = Nothing
Set shell = Nothing

Вы можете сделать это с PowerShell легко. PowerShell предоставляет переменные среды, используя $env: префикс. Например, я хотел запустить TeamSQL с кастомными JAVA_HOME а также PATH переменные окружения, чтобы я мог подключиться к базе данных PostgreSQL. Для этой цели TeamSQL зависит от JDK / OpenJDK.

Сначала я скачал предварительно собранный OpenJDK и распаковал архив ZIP с 7-Zip.

Далее в PowerShell я запустил следующее:

$env:JAVA_HOME='C:\Users\TrevorSullivan\Downloads\openjdk\jdk-11.0.2\'
$env:PATH += ';%JAVA_HOME%\bin'

# Launch TeamSQL
& C:\Users\TrevorSullivan\AppData\Local\Programs\TeamSQL\TeamSQL.exe

Сохраните этот код PowerShell в .ps1 файл, и вы можете запустить его с PowerShell. Поскольку дочерние процессы наследуют переменные среды из сеанса PowerShell, ваша программа готова к работе.

Другие вопросы по тегам