我可以从MATLAB命令行中找到具体程序的安装路径吗? 或者我可以找到注册程序的路径(Windows reg等效)吗?
答案 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,命令成功了。或者,请在stackoverflow和superuser上查看这些答案。
答案 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
请注意,的第一步将需要一段时间。