我觉得我应该能够在应用程序生命周期的基础上将目录添加到PATH环境变量,但我不知道如何做到这一点。是否可以将参数添加到 Windows 快捷方式,将目录附加到 PATH 的当前值以供被链接的应用程序使用?
4 回答
如此处所述: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 上测试)
让快捷方式执行一个批处理文件 (.cmd),即
- 设置环境变量
- 执行应用程序
- 您使用“START”执行应用程序,这将在另一个进程中启动应用程序,但它会复制环境。您无需等待应用程序完成。
- 现在您可以退出批处理文件。
应该是这样的:
@echo off
set path=%path%;C:\My Folder
start "Window Title" "Path to my exe"
直接链接到批处理文件会产生一个您可能想要避免的烦人的控制台。这是一个解决方法。更简单的解决方案是使用链接中的“开始最小化”选项,但在 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
您可以使用 PowerShell 轻松完成此操作。PowerShell 使用$env:
前缀公开环境变量。例如,我想使用自定义JAVA_HOME
和PATH
环境变量启动 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 会话继承环境变量,所以您的程序可以运行。