41

我觉得我应该能够在应用程序生命周期的基础上将目录添加到PATH环境变量,但我不知道如何做到这一点。是否可以将参数添加到 Windows 快捷方式,将目录附加到 PATH 的当前值以供被链接的应用程序使用?

4

4 回答 4

40

如此处所述: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 上测试)

于 2016-01-13T14:24:02.603 回答
34

让快捷方式执行一个批处理文件 (.cmd),即

  • 设置环境变量
  • 执行应用程序
  • 您使用“START”执行应用程序,这将在另一个进程中启动应用程序,但它会复制环境。您无需等待应用程序完成。
  • 现在您可以退出批处理文件。

应该是这样的:

@echo off
set path=%path%;C:\My Folder
start "Window Title" "Path to my exe"
于 2010-06-14T10:08:10.663 回答
4

直接链接到批处理文件会产生一个您可能想要避免的烦人的控制台。这是一个解决方法。更简单的解决方案是使用链接中的“开始最小化”选项,但在 Windows 7 上,您会看到一个短暂的控制台点亮您的任务栏。

开始.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
于 2011-10-11T22:01:35.827 回答
2

您可以使用 PowerShell 轻松完成此操作。PowerShell 使用$env:前缀公开环境变量。例如,我想使用自定义JAVA_HOMEPATH环境变量启动 TeamSQL,这样我就可以连接到 PostgreSQL 数据库。为此,TeamSQL 依赖于 JDK / OpenJDK。

首先,我下载了预构建的 OpenJDK 并使用 7-Zip 解压缩了 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 会话继承环境变量,所以您的程序可以运行。

于 2019-01-26T20:29:04.770 回答