扩展命令行搜索路径而不编辑 PATH 变量

扩展命令行搜索路径而不编辑 PATH 变量

我想扩展我的系统搜索路径而不向其添加新目录%PATH%,我知道注册表项中放置的条目只有在使用命令行不使用它App Paths时才会被访问。Windows 上是否有任何机制可以做到这一点?ShellExecuteEx

答案1

应用程序路径据我所知,不能用于搜索路径,但你有单独的小路为系统和用户环境变量定义。可执行文件的搜索将包括两者中的所有项目。

如果长度系統小路是一个问题,您可以通过定义另一个环境变量并引用它来简化,例如

创建环境变量PF32具有价值程序文件 (x86)

小路C:\Program 文件 (x86)\Intel然后缩短为%PF32%\英特尔

答案2

我经常编写一个简短的批处理文件来设置特殊应用程序的环境变量,而不是添加到路径中,这会不必要地扩展路径(或添加冲突的环境变量)。

下面是一个示例 ( run-winvile.bat),它允许命令行访问 中没有的 GUI 程序PATH。它用于setlocal限制更改环境的范围:

@echo off
setlocal
set WINVILE_DIR="C:\Program Files (x86)\VI Like Emacs\bin"
cd %WINVILE_DIR%
IF ERRORLEVEL 1 goto :finish  
set WINVILE_EXE=WinVile-wide-ole.exe
if exist %WINVILE_EXE% start %WINVILE_EXE% %1 %2 %3 %4 %5 %6 %7 %8 %9
:finish
endlocal

此示例消除了一些冲突的名称PATH

@echo off
setlocal
rem trim path to get rid of cygwin
set PATH=C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;C:\com

rem add PERL for vile's builds
set PATH=%PATH%;c:\perl\5.8.5\bin;c:\perl\5.8.5\bin\mswin32-x86-multi-thread

call "c:\program files (x86)\microsoft visual studio 9.0\vc/vcvarsall.bat" %1
shift
run-winvile %*
endlocal

相关内容