Можно ли установить переменную среды для приложения с помощью ярлыка в 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, ваша программа готова к работе.