Vaa3d_删除plugins下非dll文件和空白文件夹_matlab

20 篇文章 0 订阅
12 篇文章 1 订阅

警告!!!删除操作不可逆请谨慎操作

在该代码中我已经注释了删除代码,如需要删除请自行解除注释。
可能在删除空白文件夹后生成新的空白文件夹,因为该文件可运行数次以确认删除完毕。

该功能非必须!请注意!

原因

第一

在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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值