从MATLAB中找到已安装程序的路径?

时间:2011-04-28 12:25:30

标签: matlab path installation

我可以从MATLAB命令行中找到具体程序的安装路径吗? 或者我可以找到注册程序的路径(Windows reg等效)吗?

4 个答案:

答案 0 :(得分:3)

这不是100%可靠,但大部分时间都会得到正确答案:

function p = findOnSystemPath(f)
p = '';
path = getenv('path');
dirs = regexp(path,pathsep,'split');
for iDirs = 1:numel(dirs)
    tp = fullfile(dirs{iDirs},f);
    if exist(p,'file')
        p = tp;
        break
    end
end

样本用法:

>> findOnSystemPath('runemacs.exe')

ans =

C:\Program Files (x86)\emacs\bin\runemacs.exe

根据您的操作系统,您可以直接从系统获取此信息:

which适用于安装了Cygwin的Unix系统和Windows系统:

>> [~,p] = system(sprintf('which "%s"',f))

p =

C:/Program Files (x86)/emacs-mw-a/bin/runemacs.exe
Windows 2003 and later上提供了

where

>> [~,p] = system(sprintf('where "%s"',f))

p =

C:\Program Files (x86)\emacs-mw-a\bin\runemacs.exe

在某些情况下,您可以使用winqueryreg从注册表中提取此信息,例如:

>> notepadEdit = winqueryreg('HKEY_CLASSES_ROOT','Applications\notepad.exe\shell\edit\command')

notepadEdit =

C:\Windows\system32\NOTEPAD.EXE %1

答案 1 :(得分:1)

调用 DOS / bash命令which,例如,

!which matlab
!which notepad

(或使用system代替!。)

编辑:似乎在Windows中没有直接的等价物。我在我试过的(Win XP)机器上安装了cygwin,命令成功了。或者,请在stackoverflowsuperuser上查看这些答案。

答案 2 :(得分:0)

这取决于您对操作系统的了解以及您的程序具有哪些属性。

在Linux上,我通常会这样做:

[error, path] = system(sprintf('which "%s"',programName));

它看起来不漂亮,而且远非便携式(我想它在Windows上不起作用,也许只有在你安装Cygwin或类似的东西时)。它在Unix中要容易得多,因为大多数可执行文件都可以从“路径”(环境变量“path”)访问,而在Windows中,大多数可执行文件都存储在Windows目录中(位于默认路径中,因此可以找到它们)或者在Program Files目录中,这个目录并不像我想象的那么远。

错误= 0,当找到程序时,path显然包含可执行文件的路径。

对于Windows,我猜你可以在程序的所有目录中搜索,但这可能有点单调乏味。

答案 3 :(得分:0)

MATLAB实际上并不是用作在驱动器上任何位置搜索文件的工具。这是一个最好留给操作系统的任务,而Egon建议的是你应该做的事情。只需将which替换为DOS中的等效项(您应该已经知道了,否则只需在MS-DOS / Windows标记中提出另一个问题。它可能已经得到了答案。)。

如果您真的那么他们一直在使用MATLAB搜索驱动器,那么您可以执行以下操作

addpath(genpath('C:\')); %#' I am not sure which way the slash is
which filename

请注意,的第一步将需要一段时间。

相关问题