Как назначить текущий каталог для папки dropbox

Я пишу код Matlab и хочу иметь доступ к нему с разных рабочих столов, поэтому я храню все в Dropbox. Мне интересно, есть ли способ сообщить Matlab текущий путь без изменения кода каждый раз, когда я использую другую машину. Например, в моем коде есть следующая строка, но я хотел бы сделать ее более общей для использования на каждом компьютере. Как я могу сказать MATLAB правильный путь к моему файлу?

[num,txt,raw]= xlsread('C:\Users\Zahra\Documents\dropbox \data.xlsx');

2 ответа

Решение

Папка Dropbox закодирована в base64 в файле host.db в папке, которая находится в AppData папка в винде. Я не уверен, если это кроссплатформенный, но работает на моей системе и моем Dropbox.

%http://www.mathworks.com/matlabcentral/fileexchange/15886-get-application-data-directory/content/getapplicationdatadir.m 
%http://www.mathworks.com/matlabcentral/fileexchange/12907-xmliotools/content/base64decode.m
f = getapplicationdatadir('dropbox', 0, 0);
hostdb = fopen([f '/host.db']);
%skip line
fgetl(hostdb);
s = fgetl(hostdb);
path = sprintf('%s', base64decode(s));
cd(path);

Вы можете использовать массив ячеек, содержащий ваши пути DropBox, и протестировать их с помощью isdir встроенный в cellfun:

dropbox_path = {'/Users/x/Dropbox/';
    '/Users/xx/Dropbox/';
    '/Users/xxx/Dropbox/'};

dropbox_path = dropbox_path{cellfun(@isdir,dropbox_path)}

Тогда прочитайте ваш файл

[num,txt,raw]= xlsread([dropbox_path 'data.xlsx']);
Другие вопросы по тегам