MATLAB: Очистить каталог, кроме предварительно заданных файлов, перед запуском кода

Я хочу создать код Matlab, который очищает указанный каталог перед запуском кода. Однако в этом каталоге есть 4 файла, которые должны оставаться там для правильной работы.

В настоящее время для удаления файла из каталога я использую следующее:

    AVLDir = External\AVL\
    delete([AVLDir obj.Data.FileId '*.dat']);
    delete([AVLDir obj.Data.FileId '*.avl']);
    delete([AVLDir obj.Data.FileId '*.key']);

Здесь мне нужно имя файла и расширение, чтобы иметь возможность найти файл и удалить его. Я хочу удалить все в папке External\AVL\, кроме следующих файлов:

avl.exe
avl_linux.txt
avl_mac (type of file is 'File') Don't exactly know what this is
avl_osx.txt

Я хочу сделать это, чтобы удалить все в папке, что может испортить мой код, так как я использую avl.exe извне.

Как бы я поступил?


person Balraj Boyal    schedule 02.02.2016    source источник
comment
Используйте dir, чтобы получить список всех файлов. Затем удалите файлы, которые вы хотите сохранить, и вы знаете, какие вам нужно удалить.   -  person Daniel    schedule 02.02.2016


Ответы (1)


Получите содержимое каталога с помощью dir, затем сравните имя каждого элемента, не являющегося папкой, с вашим списком исключений и удалите его, если совпадений нет.

for d = dir('External\AVL').';
  if(~d.isdir && ~any(strcmp(d.name,{'avl.exe','avl_linux.txt','avl_mac','avl_osx.txt'})));
    delete(fullfile('External\AVL', d.name));
  end;
end;
person dasdingonesin    schedule 02.02.2016
comment
Спасибо! это, кажется, работает и делает то, что я хочу. Спасибо за помощь. - person Balraj Boyal; 02.02.2016
comment
Поскольку речь идет об удалении файлов, может быть целесообразно добавить возможность перемещать удаленные файлы в папку корзины с помощью файла перезапустить функцию. - person il_raffa; 02.02.2016