警告!!!删除操作不可逆请谨慎操作
在该代码中我已经注释了删除代码,如需要删除请自行解除注释。
可能在删除空白文件夹后生成新的空白文件夹,因为该文件可运行数次以确认删除完毕。
该功能非必须!请注意!
原因
第一
在windows下,vaa3d的功能通过dll文件实现,其他文件如 * .exp,* .ilk,* .lib等文件,但是这些文件的存在使得在打开Vaa3d时,会提示更多无关的错误信息,为了不碍眼,因此我决定删掉这些无关文件。
如:
Fail instantiation( The file 'D:/v3d_user/plugins/neuron_tracing/segment_maker/segment_maker.lib' is not a valid Qt plugin. ):
"D:/v3d_user/plugins/neuron_tracing/segment_maker/segment_maker.lib"
第二
即便是空白的文件夹也会在V3D界面中产生一个二级选项,过多的二级选项使得查找插件时比较麻烦。因此我决意删掉这些空白文件夹。
matlab代码
clc
clear
close all
%% The directory of your files
str = 'D:\v3d_2013\v3d_external\bin\plugins\';
if ~endsWith(str,'plugins\')
error('input should ends with plugins\')
end
if ~exist(str,'dir')
error('input not exist')
end
%% The use of depth-first walk
mFiles = [];
[mFiles, iFilesCount] = DeepTravel(str,mFiles,0);
mFiles = mFiles';
for i=1:size(mFiles,1)
if ~endsWith(mFiles{i},'.dll')
disp(mFiles{i})
% delete(mFiles{i})
end
end
%% remove empty dir
mFiles = [];
[mFiles, iFilesCount] = DeepTravel1(str,mFiles,0);
mFiles = mFiles';
for i=1:size(mFiles,1)
if exist(mFiles{i},'dir')
disp(mFiles{i})
% rmdir(mFiles{i})
end
end
function [ mResFiles, iTCount ] = DeepTravel( strPath, mFiles, iTotalCount )
iTmpCount = iTotalCount;
path=strPath;
Files = dir(fullfile( path,'*.*'));
LengthFiles = length(Files);
if LengthFiles <= 2
mResFiles = mFiles;
iTCount = iTmpCount;
return;
end
for iCount=3:LengthFiles
if Files(iCount).isdir==1
if ~strcmp(Files(iCount).name, '..' )
filePath = [strPath Files(iCount).name '\'];
[mFiles, iTmpCount] = DeepTravel( filePath, mFiles, iTmpCount);
end
else
iTmpCount = iTmpCount + 1;
filePath = [strPath Files(iCount).name];
mFiles{iTmpCount} = filePath;
end
end
mResFiles = mFiles;
iTCount = iTmpCount;
end
function [ mResFiles, iTCount ] = DeepTravel1( strPath, mFiles, iTotalCount )
iTmpCount = iTotalCount;
path=strPath;
Files = dir(fullfile( path,'*.*'));
LengthFiles = length(Files);
if LengthFiles <= 2
iTCount = iTmpCount+1;
mFiles{iTCount} = strPath;
mResFiles = mFiles;
return;
end
for iCount=3:LengthFiles
if Files(iCount).isdir==1
if ~strcmp(Files(iCount).name, '..' )
filePath = [strPath Files(iCount).name '\'];
[mFiles, iTmpCount] = DeepTravel1( filePath, mFiles, iTmpCount);
end
end
end
mResFiles = mFiles;
iTCount = iTmpCount;
end