我们假设我要选择用户mp3
库中的所有Music
个文件。我可以通过在路径栏(地址栏?)中键入libraries\Music
从Windows资源管理器访问此库。但是在MATLAB中,如果我使用uigetfile
或uigetdir
进行尝试,则找不到它,而是打开默认位置。
[fileName, pathName, ~] = uigetfile('*.mp3', 'Select Song','libraries\Music\');
根据此superuser question,该库是Windows XML功能,实际上不是环境变量。建议是让用户创建环境变量。虽然我的用户可以这样做,但我不想成为工作组的IT支持,因此我想要一种完全从应用程序本身完成此操作的方法。我也不能依赖硬编码路径,因为有些用户的硬盘很小,而且他们的库都指向网络存储。
Microsoft提供this description using IShellLibrary.但我没有找到有关在MATLAB中使用IShellLibrary的任何信息。打开的默认文件窗口在左侧工具栏上有库,因此让用户只选择他们的文档或其他任何东西并不是什么大问题。但它并不那么干净。
MATLAB有没有办法识别用户的Windows库位置?
答案 0 :(得分:0)
执行此操作的一种方法是从 Windows 注册表中获取文件的值。 MATLAB 中的命令是 winqueryreg
。阅读的关键是'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Personal'
因此,完成此操作的完整命令是:
ext = '*xlsx'; % search for excel for example
title = 'Find Excel in Documents';
locDir = winqueryreg('HKEY_CURRENT_USER',...
'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\', 'Personal');
[file,path,indx] = uigetfile(fullfile(locDir, ext), title);