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
对每个文件夹中的文件进行处理,并将处理后的输出文件保存到相应的结果文件夹中。具体步骤如下:
-
设置路径:
- 定义了多个路径变量,包括输入文件夹路径
inputDir
、输入文件临时存放目录inDir
、输出文件临时存放目录dumpDir1
、结果文件夹路径resultDir
、可执行文件所在目录exeDir
以及可执行文件名exeFile
。
- 定义了多个路径变量,包括输入文件夹路径
-
清空临时文件夹:
- 使用
delete
函数清空inDir
和dumpDir1
文件夹中的所有文件。
- 使用
-
循环处理输入文件夹:
- 使用
for
循环遍历 1 到 6 的文件夹。 - 在每次循环中:
- 显示当前正在处理的文件夹编号。
- 将当前文件夹(
inputDir
下的i
文件夹)中的所有文件复制到inDir
文件夹。 - 切换到可执行文件所在的目录
exeDir
。 - 调用可执行文件
Console3.exe
,并记录开始时间。 - 计算并显示
Console3.exe
的执行时间。 - 轮询
dumpDir1
文件夹,直到其中有输出文件或达到最大尝试次数(10 次)。- 如果在
dumpDir1
文件夹中检测到输出文件,创建对应的结果文件夹(resultDir
下的i
文件夹),并将dumpDir1
中的所有文件复制到结果文件夹中。 - 如果达到最大尝试次数仍未检测到输出文件,显示警告信息并跳过当前文件夹。
- 如果在
- 清空
inDir
和dumpDir1
文件夹,为下一次循环做准备。
- 使用
-
处理完成提示:
- 当所有文件夹处理完成后,显示“所有文件处理完成!”的提示信息。
总的来说,这段代码实现了自动化地对多个输入文件夹进行处理,并将处理结果保存到指定位置的功能,同时还对处理过程进行了时间记录和输出文件的轮询检测。