目录
啰嗦的碎碎念
欢迎继续收看第三篇,接着一和二
小白的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博客