数据处理|批量提取ini文件中的数据

发布时间 2023-06-06 09:50:28作者: Cystalisia

 

clear
clc

fileFolder=[pwd,];
dirOutput=dir(fullfile(fileFolder,'*.ini'));
fileNames={dirOutput.name}';
num_files = length(fileNames);

[filepath,foname] = fileparts(fileFolder);
if ~isfolder('result')
    mkdir('result');
end

for fi = 1:num_files

    file = [fileFolder,'\',cell2mat(fileNames(fi))];
    celldatas = fread_user(file);
    rl=length(celldatas);

   str_all = [];

    %% 对每一行进行操作
    for num_r=1:rl
        %%删除空格
        str = celldatas{num_r,1};
        str_new = '';
        str_cell = strsplit(str,' ');
        for i = [1:length(str)]
            if ~strcmp(str(i),' ')
                str_new = [str_new, str(i)];
            end
        end
        str=str_new;

        %%修改name:替换为一个空格
        locname=strfind(str_new,'name:');
        for num_loc=1:length(locname)
            str(locname(num_loc):locname(num_loc)+4) = ' ';
        end
        str_new=strsplit(str);
        str2=[];
        for num_s=1:length(str_new)
            if num_s ~= length(str_new)
                str2=[str2,str_new{num_s},' '];
            else
                str2=[str2,str_new{num_s}];
            end
        end
        %%去掉每一行$及以后的字符
        locname2=strfind(str2,'$');
        str2(locname2:end)=[];
        if num_r ~= rl
            str_all = [str_all, str2, '\n'];
        else
            str_all = [str_all, str2];
        end
    end

  %%存进去
  fp = fopen(['.\result\',fileNames{1}],'w');
  fprintf(fp,str_all);
  fclose(fp);
end



%% read file by rows
function celldata = fread_user(file)
fp = fopen(file,'r');
i = 1;
flag = 0;
celldata = {};
while(flag~=-1)
    flag = fgetl(fp);

    if flag ~=-1
        celldata{i,1} = flag;
    end

    if length(flag)==0
        flag=0;
    end

    i = i +1;
end
fclose(fp);

end