小白的MatSWMM使用心路(三)——批量修改后缀(txt转inp),并指定文件夹存放

目录

啰嗦的碎碎念

txt转inp最方便的方法(非matlab)

Matlab里txt转inp


啰嗦的碎碎念

欢迎继续收看第三篇,接着一和二

小白的MatSWMM使用心路(一)——安装试运行过程与可能常见问题的解决_叶不伤的博客-CSDN博客

小白的MatSWMM使用心路(二)——用matlab修改INP文件参数/使用matlab查找txt内容并修改多行内容_叶不伤的博客-CSDN博客

额……中间其实有一个实现批量修改的步骤还没写,其实批量修改的思路基本就是不停写循环,也不难实现……不过现在那部分代码自己写的有点混乱,就之后有机会再整理发出来啦。

总之,在经过了批量化的修改txt文件后,下一步就是批量把后缀改成inp了。

自动调参动辄几千个组合,手动肯定不太现实,其他语言和方式也有通过生成.bat文件后批量改的,也不太难,试了一下甚至可以说是要多快有多快……

txt转inp最方便的方法(非matlab)

1. 在需要转格式的文件夹里新建txt

2. 在新txt里复制粘贴

ren *.txt *.inp

3. 把这个txt后缀改成.bat

4. 双击bat文件,黑屏半秒后就完成 (快啊,hin快啊)

参考:

如何批量修改文件后缀_为所爱的人努力的博客-CSDN博客_批量修改文件后缀

但是,如果想既然都选择了matlab,那就好好用到底吧,打算一键自动化的话,也是有方法的(比起.bat方法真的是有点麻烦呢(笑)

Matlab里txt转inp

主要就是使用copyfile这个函数

copyfile (‘原文件全地址’,‘新文件全地址’)

就可以实现把原文件的内容,存在新文件全地址了。也就能够连修改文件后缀+指定存放文件夹。

那么在我们这个批量转换中,所需要的就是批量生成地址+文件名。获取文件名主要还是依靠dir函数。

完全代码如下

opath=uigetdir(' ',"选择需要更改文件们存在的文件夹");
npath=uigetdir(' ',"选择更改完的文件们存在的文件夹");
info=dir((fullfile(opath, '\*.txt'))); %获取需要更改的文件们的信息,只选txt格式的
len=length(info);  %计数一共几个文件

for i=1:len
    oname=info(i).name; %获取带txt的老名字
    a=strfind(oname,'.'); %查出这个名字里点是第几个字符
    nname=oname;
    nname(a+1:end)='inp' %把点后面的字符全改成inp
    newnp=[npath '\' nname]; %连接新全地址
    oldnp=[opath '\' oname]; %连接旧全地址
    copyfile(oldnp,newnp); %执行生成新文件
end

uigetdir是弹对话框选择文件夹。当然这个手动输入opath和npath值也是一样的哈。整体没啥难度,主要参考结合了以下两位前辈的idea。玩点不一样的,如何使用MATLAB实现批量修改文件后缀名,文件名,批量复制文件_普通网友的博客-CSDN博客

matlab文件改名重命名改名复制 - 一杯明月 - 博客园 (cnblogs.com)

你可能感兴趣的:(swmm相关研究,Matlab日常,算法)