当前位置: 首页 > article >正文

MATLAB对文件处理

% 设置路径
inputDir = 'G:\GIPL2\GIPL\input';
inDir = 'G:\GIPL2\GIPL\FILE\in';
dumpDir1 = 'G:\GIPL2\GIPL\FILE\dump';
resultDir = 'G:\GIPL2\GIPL\result';
exeDir = 'G:\GIPL2\GIPL\FILE';
exeFile = 'Console3.exe';

% 清空 in 和 dump 文件夹
delete(fullfile(inDir, '*.*'));
delete(fullfile(dumpDir1, '*.*'));
fo
% 循环处理 1-7 文件夹
for i = 1:6
    disp(['正在处理文件夹 ', num2str(i), '...']);
    
    % 复制输入文件到 in 文件夹
    copyfile(fullfile(inputDir, num2str(i), '*.*'), inDir);
    
    % 切换到 EXE 文件所在目录
    cd(exeDir);
    
    % 调用 EXE,并记录开始时间
    disp(['正在运行 ', exeFile, '...']);
    startTime = tic;  % 开始计时
    status = system(exeFile);
    
    % 检查程序运行的时间
    elapsedTime = toc(startTime);
    disp(['Console3.exe 执行时间: ', num2str(elapsedTime), ' 秒']);
    
    % 轮询直到 dump 文件夹中有输出文件
    maxAttempts = 10;  % 最大尝试次数
    attempts = 0;
    while attempts < maxAttempts
        pause(1);  % 暂停 1 秒
        if ~isempty(dir(fullfile(dumpDir1, '*.*')))  % 检查是否有输出文件
            disp('输出已生成,保存到结果文件夹...');
            mkdir(fullfile(resultDir, num2str(i)));  % 创建结果文件夹
            copyfile(fullfile(dumpDir1, '*.*'), fullfile(resultDir, num2str(i), ''));  % 复制输出文件
            break;
        end
        attempts = attempts + 1;
    end
    
    if attempts == maxAttempts
        disp('警告: 没有生成输出,跳过文件夹');
    end
    
    % 清空 in 和 dump 文件夹
    delete(fullfile(inDir, '*.*'));
    delete(fullfile(dumpDir1, '*.*'));
end

disp('所有文件处理完成!');

这段 MATLAB 代码的主要功能是对一系列输入文件夹(1 - 6)进行处理,通过调用外部可执行文件 Console3.exe 对每个文件夹中的文件进行处理,并将处理后的输出文件保存到相应的结果文件夹中。具体步骤如下:

  1. 设置路径

    • 定义了多个路径变量,包括输入文件夹路径 inputDir、输入文件临时存放目录 inDir、输出文件临时存放目录 dumpDir1、结果文件夹路径 resultDir、可执行文件所在目录 exeDir 以及可执行文件名 exeFile
  2. 清空临时文件夹

    • 使用 delete 函数清空 inDirdumpDir1 文件夹中的所有文件。
  3. 循环处理输入文件夹

    • 使用 for 循环遍历 1 到 6 的文件夹。
    • 在每次循环中:
      • 显示当前正在处理的文件夹编号。
      • 将当前文件夹(inputDir 下的 i 文件夹)中的所有文件复制到 inDir 文件夹。
      • 切换到可执行文件所在的目录 exeDir
      • 调用可执行文件 Console3.exe,并记录开始时间。
      • 计算并显示 Console3.exe 的执行时间。
      • 轮询 dumpDir1 文件夹,直到其中有输出文件或达到最大尝试次数(10 次)。
        • 如果在 dumpDir1 文件夹中检测到输出文件,创建对应的结果文件夹(resultDir 下的 i 文件夹),并将 dumpDir1 中的所有文件复制到结果文件夹中。
        • 如果达到最大尝试次数仍未检测到输出文件,显示警告信息并跳过当前文件夹。
      • 清空 inDirdumpDir1 文件夹,为下一次循环做准备。
  4. 处理完成提示

    • 当所有文件夹处理完成后,显示“所有文件处理完成!”的提示信息。

总的来说,这段代码实现了自动化地对多个输入文件夹进行处理,并将处理结果保存到指定位置的功能,同时还对处理过程进行了时间记录和输出文件的轮询检测。


http://www.kler.cn/a/488212.html

相关文章:

  • List详解 - 双向链表的操作
  • web服务器快速目录搜索遍历工具推荐:Dirsearch
  • 【C++】揭开C++类与对象的神秘面纱(首卷)(类的基础操作详解、实例化艺术及this指针的深究)
  • Perl语言的循环实现
  • Fastapi + vue3 自动化测试平台(1)--开篇
  • 比较procfs 、 sysctl和Netlink
  • springboot整合gateway
  • 多云架构,JuiceFS 如何实现一致性与低延迟的数据分发
  • [IoT]解决方案设计:智能农业监控系统
  • pytorch模型的保存失敗しましたが、
  • JVM生产环境常用参数配置及调优建议
  • vue3+ElementPlus+VueCropper实现上传图片
  • Day97 minio
  • 详细分析 创建并上传到 GitHub 仓库
  • 【每日学点鸿蒙知识】调试、网络、缓存、富文本编辑等
  • Unity学习之UGUI进阶
  • android studio使用DataBinding
  • Unity使用Vuforia插件进行AR开发
  • Django REST framework 源码剖析-视图集详解(ViewSet)
  • 使用Logstash 将Mysql的数据导入ElasticSearch中
  • (超详细)Maven安装配置、以及在IDEA中创建Maven项目
  • LeetCode 2765. 最长交替子数组解析与解题思路
  • 机器学习之过拟合(算法参数,超参数) 欠拟合(模型参数)
  • 简单的spring boot tomcat版本升级
  • 解决Qt打印中文字符出现乱码
  • plane开源的自托管项目