我有一个关于如何更改某些文件名的问题。问题是我有这种档案,例如:
25614_z.zip
25312_z.zip
25003_z.zip
我想要创造:
lp_25_614.zip
lp_25_312.zip
lp_25_003.zip
所以,我需要自动化这个过程
lp + 25(两个第一位数字)+ 3 4和5位置的数字)+ dot zip
有什么办法吗?
修改
例如,这将是我的条件:
XXXX
if fileNames{k}(3:5) >0 <5 (the interval)= 2
fileNames{k}(3:5)> >5 >10 =10
所以,例如:
fileNames {k}(3:5)= 05
在条件之后,它将在重命名中替换为= 2
然后我想在重命名上添加它。
newFileName = ['fiche' fileNames{k} (3) 'pd' fileNames{k}(3:5) 'XXX '.tar.gz'];
这可能吗?
答案 0 :(得分:2)
您可以使用movefile
重命名文件:
myPath = 'C:\myFolder\'; % path to your files
fileNames = {
'25614_z.zip'
'25312_z.zip'
'25003_z.zip'
}
for k = 1:length(fileNames)
newFileName = ['lp_' fileNames{k}(1:2) '_' fileNames{k}(3:5) '.zip'];
% renaming
movefile([myPath fileNames{k}], [myPath newFileName]);
end
<强>〜编辑〜强> 关于你的编辑:是的,可以为不同的情况生成不同的文件名。请注意,下面的示例非常笨拙,只有在您只有少量不同情况时才应使用。
myPath = 'C:\myFolder\'; % path to your files
fileNames = {
'25614_z.zip'
'25312_z.zip'
'25003_z.zip'
}
for k = 1:length(fileNames)
n = num2str(fileNames{k}(3:5));
if n > 0 && n < 5
fileName = % put your file name for this case here
elseif n >= 5 && n < 10
fileName = % put your file name for this case here
elseif n >= 10 && n < 20
fileName = % put your file name for this case here
end
% renaming
movefile([myPath fileNames{k}], [myPath newFileName]);
end
答案 1 :(得分:0)
作为一种更通用的解决方案,您可以使用regexp
和Token
参数来匹配字符串的各个部分:
for k = 1:length(fileNames)
splitname = regexp(fileNames{k}, '(\d\d)(\d\d\d)', 'Tokens');
fname_new = ['lp_' splitname{1}{1} '_' splitname{1}{2} '.zip'];
movefile(fileNames{k}, fname_new);
end
此处,regexp
中的模式匹配两位数后跟三位数。